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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2009, 16:26   #1
Xcopy
Форумчанин
 
Аватар для Xcopy
 
Регистрация: 03.02.2009
Сообщений: 126
Вопрос Как записать каждое число в отдельности в переменную

Гуглил! Поиск тоже юзал!


К примеру, есть мемо1, в нем к примеру 3 числа через пробел (на нулевой строке), как записать каждое число в отдельности в переменную?


Скорей всего такая тема уже была, если да, дайте ссылку на тему.
Заранее благодарен!!!

Что за название - "input" ?
Читаем правила...

Последний раз редактировалось mihali4; 01.12.2009 в 17:06.
Xcopy вне форума Ответить с цитированием
Старый 01.12.2009, 16:28   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Код:
Stringa := Memo1.Lines[0];
Дальше ищем первый пробел и :
Код:
N:= Pos(' ',Stringa);
Chislo1:=StrToInt(Copy(Stringa,0,N-1);
Delete(Stringa,0,N);
Chislo2:=StrToInt(Stringa);
Ясно?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 01.12.2009, 16:53   #3
Xcopy
Форумчанин
 
Аватар для Xcopy
 
Регистрация: 03.02.2009
Сообщений: 126
По умолчанию

Alex Cones, спасибо! Я написал так.
Цитата:
memo1.Lines.LoadFromFile('C:\input. txt');
s:=memo1.Lines[0];
n:=pos(' ',s);
a1:= strtoint(copy(s,0,n-1));
delete(s,0,n);
memo1.Lines.Add(inttostr(a1));

s:=memo1.Lines[0];
n:=pos(' ',s);
a2:= strtoint(copy(s,0,n-1));
delete(s,0,n);
memo1.Lines.Add(inttostr(a2));
...
И из строки 1 2 3 3 2 1
Он правильно взял число 1, но число 2 он не взял. Место этого в переменную а2 записал тоже 1!

Цитата:
Сообщение от Xcopy Посмотреть сообщение
Alex Cones, спасибо! Я написал так.

И из строки 1 2 3 3 2 1
Он правильно взял число 1, но число 2 он не взял. Место этого в переменную а2 записал тоже 1!
Тоесть, после выполнения в мемо1 было это
1 2 3 3 2 1
1
1

Последний раз редактировалось Stilet; 01.12.2009 в 17:10.
Xcopy вне форума Ответить с цитированием
Старый 01.12.2009, 16:57   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
delete(s,1,n);
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.12.2009, 17:00   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Код:
Memo1.Lines.LoadFromFile Bla-bla-bla;
S:=Memo1.Lines[0];
ShowMessage(S); \\ Для проверки
While S<>'' do
Begin
 N:=Pos(' ',S);
 Memo1.Lines.Add(Copy(S,1,N-1);
 Delete(S,1,N); 
End;
По идее должно сработать, писал здесь...

Цитата:
delete(s,1,n);
Точно! Блин, а тут правильно написал... Пора на пенсию...

2TC: В COPY тоже 1 должно быть.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 01.12.2009 в 17:02.
Alex Cones вне форума Ответить с цитированием
Старый 01.12.2009, 17:00   #6
Xcopy
Форумчанин
 
Аватар для Xcopy
 
Регистрация: 03.02.2009
Сообщений: 126
По умолчанию

НЕ ПОМОГАЕТ!!!
Цитата:
memo1.Lines.LoadFromFile('C:\input. txt');
s:=memo1.Lines[0];
n:=pos(' ',s);
a1:= strtoint(copy(s,0,n-1));
delete(s,1,n);
memo1.Lines.Add(inttostr(a1));

s:=memo1.Lines[0];
n:=pos(' ',s);
a2:= strtoint(copy(s,0,n-1));
delete(s,1,n);
memo1.Lines.Add(inttostr(a2));
Ответ:
1 2 3 3 2 1
1
1
Xcopy вне форума Ответить с цитированием
Старый 01.12.2009, 17:02   #7
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Код:
S:=Trim(Memo1.Lines[0])
будет надежнее
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 01.12.2009, 17:02   #8
Xcopy
Форумчанин
 
Аватар для Xcopy
 
Регистрация: 03.02.2009
Сообщений: 126
По умолчанию

Цитата:
По идее должно сработать, писал здесь...
Да, он записывает цифру 1 в переменую а1, но в переменую а2 цифру 2 не записывает!!

Цитата:
Код:

S:=Trim(Memo1.Lines[0])

будет надежнее
Хм... Если я использую Trim, как я определю потом где цифра заканчивается и начинается новая?
Сори за флуд.

Последний раз редактировалось Stilet; 01.12.2009 в 17:10.
Xcopy вне форума Ответить с цитированием
Старый 01.12.2009, 17:05   #9
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Xcopy, исходя из вашего кода можно сделать вывод, что вы все время берете первоначальную строку

Код:
memo1.Lines.LoadFromFile('C:\input. txt');
s:=Trim(memo1.Lines[0]); //на тот случай, если перед строкой есть пробелы
n:=pos(' ',s);
a1:= strtoint(copy(s,0,n-1));
delete(s,1,n);
memo1.Lines.Add(inttostr(a1));

s:=memo1.Lines[0];//она вообще не нужна

n:=pos(' ',s);
a2:= strtoint(copy(s,0,n-1));
delete(s,1,n);
memo1.Lines.Add(inttostr(a2));
©Учиться, учиться и еще раз учиться!

Последний раз редактировалось quit; 01.12.2009 в 17:07. Причина: добавил Trim
quit вне форума Ответить с цитированием
Старый 01.12.2009, 17:06   #10
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
s:=memo1.Lines.Strings[0];
while length(s)<>0 do
begin
  if pos(' ',s)<>0 then
  begin
    memo1.Lines.Add(copy(s,1,pos(' ',s)-1));
    delete(s,1,pos(' ',s));
  end else
  begin
    memo1.Lines.Add(copy(s,1,length(s)));
    delete(s,1,length(s));
  end;
end;
end;

end.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Записать каждое изменение, как??? Inoko Microsoft Office Excel 5 29.07.2009 18:09
Как в Label записать число в степени? XilDen Общие вопросы Delphi 7 03.07.2009 21:03
Как записать в переменную содержимое RichEdit? nusik Общие вопросы C/C++ 1 12.06.2009 09:12
Как записать число в двоичной форме? Stellvertreter Общие вопросы C/C++ 2 16.10.2008 22:35
Как записать и прочитать переменную моего типа из реестра? Никки Общие вопросы Delphi 2 09.12.2007 13:56