Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2009, 14:42   #1
Sad_SmiliK
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 15
По умолчанию Перенос данных из RichEdit в StringGrid (элементарщина, помогите плз!)

Есть либо объект RichEdit, либо Memo, в первой строке которых написано два числа, разделённых пробелом. Каким образом перенести эти два числа в разные ячейки таблицы StringGrid? Help!
Sad_SmiliK вне форума Ответить с цитированием
Старый 25.04.2009, 14:53   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
s,s1,s2 : string;
k : integer;
begin
s := RichEdit1.Lines[0];
k := pos(' ',s);
s1 := copy(s,1,k-1);
s2 := copy(s,k+1,length(s));
StringGrid1.Cells[1,1] := s1;
StringGrid1.Cells[2,1] := s2;

end;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 25.04.2009, 14:53   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
if Pos(' ',RichEdit1.Text)>0 then begin
  1e число := Copy(RichEdit1.Text,1,Pos(' ',RichEdit1.Text)-1);
  2e число := Copy(RichEdit1.Text,Pos(' ',RichEdit1.Text)+1,Length(RichEdit1.Text)-Pos(' ',RichEdit1.Text));
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.04.2009, 15:15   #4
Sad_SmiliK
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 15
По умолчанию

Извиняюсь, а для какого это языка?
Пробовал вводить оба кода (я работаю в C++ Builder 6), ошибки...
Sad_SmiliK вне форума Ответить с цитированием
Старый 25.04.2009, 15:31   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Sad_SmiliK, это на Делфи. В следующий раз указывайте язык.

Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString s,s1,s2;
int k;

s = (AnsiString)RichEdit1->Lines[0].Text;
k = s.Pos(' ');
s1 = s.SubString(1,k-1);
s2 = s.SubString(k+1,s.Length()-k-2);
StringGrid1->Cells[1][1] = s1;
StringGrid1->Cells[2][1] = s2;

}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 25.04.2009, 16:03   #6
Sad_SmiliK
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 15
Хорошо

спасибо, заработало!
Sad_SmiliK вне форума Ответить с цитированием
Старый 25.04.2009, 17:03   #7
Sad_SmiliK
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 15
По умолчанию

UPDATE: Спасибо посту ниже. Тему при необходимости можно снести.

Последний раз редактировалось Sad_SmiliK; 26.04.2009 в 12:15.
Sad_SmiliK вне форума Ответить с цитированием
Старый 25.04.2009, 17:13   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Данный код работает для двух чисел в строке, а что делать при необходимости разноса по ячейкам трёх и более чисел?
Вот так, например:
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString s;
int k=1;
char *p;

s = RichEdit1->Lines[0].Text.SubString(1,RichEdit1->Lines[0].Text.Length()-2);
p = strtok(s.c_str()," ");
if(p) StringGrid1->Cells[k++][1] = p;
while(p=strtok(NULL," "))
 StringGrid1->Cells[k++][1] = p;

}
(подключить string.h)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 26.04.2009, 12:17   #9
Sad_SmiliK
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 15
По умолчанию

Возникла проблема:
почему, если заменить в строке
s = RichEdit1->Lines[0].Text.SubString(1,RichEdit1->Lines[0].Text.Length()-2);
Нули в индексах на единицы (то есть брать данные из второй строки), то возникает ошибка? И как "перескочить" на новую строчку?
Sad_SmiliK вне форума Ответить с цитированием
Старый 26.04.2009, 12:46   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот так. Предыдущий пример был не совсем верный.
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString s;
int k=1;
char *p;
s = RichEdit1->Lines->Strings[0].SubString(1,RichEdit1->Lines->Strings[0].Length());
p = strtok(s.c_str()," ");
if(p) StringGrid1->Cells[k++][1] = p;
while(p=strtok(NULL," "))
 StringGrid1->Cells[k++][1] = p;

}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос данных из StringGrid-а в DBGrid artemavd БД в Delphi 16 21.03.2009 08:26
Перенос слов в StringGrid artemavd Общие вопросы Delphi 1 17.03.2009 15:58
перенос данных Romuald Microsoft Office Excel 8 23.02.2009 12:40
Перенос данных Nesta1384 Microsoft Office Excel 4 19.01.2009 02:28