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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2012, 13:25   #1
Лера22
Новичок
Джуниор
 
Регистрация: 17.11.2012
Сообщений: 4
По умолчанию Зациклить Pos()

Всем привет!
Помогите дописать программу до рабочего состояния
нужно чтобы pos() двигался дальше первой строки и переписывал значиения pos1 и pos2, которые выводятся с помощью showmessage(), чтобы я видела, правильно ли работает программа

Код программы:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  list:TStringList;
  pos1,pos2,i:integer;
begin
list:=TStringList.Create;
list.LoadFromFile('testlist.txt');

for i:=0 to list.Count-1 do
begin

   pos1:=pos('-',list.text);
    pos2:=pos(#13#10,list.text);

    showmessage(IntToStr(pos1));
   showmessage(IntToStr(pos2));

end;
end;

end.
Нужно:
использовать pos() (!!не posex())

Текстовой файл:

Цитата:
Петров-номер6
Алексеев-номер22
Филатов-номер52
программа должна выдать 6 сообщений:
Цитата:
1 строка:
1сообщение: "7"
2сообщение: "14"

2 строка:
3сообщение: "9"
4сообщение: "17"

3 строка:
5сообщение: "8"
6сообщение: "16"
Спасибо, тем кто хоть отзовётся
Лера22 вне форума Ответить с цитированием
Старый 17.11.2012, 13:30   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если уж в цикле идете по StrinList, то зачем Text парсите? Есть StringList.Strings[i] и легко посчитать по каждой строке позиции
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.11.2012, 13:35   #3
Лера22
Новичок
Джуниор
 
Регистрация: 17.11.2012
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Если уж в цикле идете по StrinList, то зачем Text парсите? Есть StringList.Strings[i] и легко посчитать по каждой строке позиции
Вы говорите про использования list.NameValueSeparator ?
если нет, то к сожалению я вас не поняла
Лера22 вне форума Ответить с цитированием
Старый 17.11.2012, 13:47   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

StringList.Strings[i] возвращает каждую строку в отдельности. В ней и ищите с помощью Pos позицию "-". Второй Pos не нужен, достаточно длину строки показать с помощью Length
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.11.2012, 13:54   #5
Лера22
Новичок
Джуниор
 
Регистрация: 17.11.2012
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
StringList.Strings[i] возвращает каждую строку в отдельности. В ней и ищите с помощью Pos позицию "-". Второй Pos не нужен, достаточно длину строки показать с помощью Length
подкрепите пожалуйста исходным кодом, если Вам не сложно.

Цитата:
Сообщение от Аватар
длину строки показать с помощью Length
после "-" неизвестно сколько символов может быть записано. потом я расчитаю сколько символов после "-"
Лера22 вне форума Ответить с цитированием
Старый 17.11.2012, 14:06   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
list:=TStringList.Create;
list.LoadFromFile('testlist.txt');
for i:=0 to list.Count-1 do
begin
   pos1:=pos('-',list.Strings[i]);
   pos2:=Length(list.Strings[i]);
   showmessage(IntToStr(pos1));
   showmessage(IntToStr(pos2));
end;
list.Free;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.11.2012, 14:08   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
подкрепите пожалуйста исходным кодом, если Вам не сложно.
for i:=0 to list.Count-1 do
begin
s:=list.strings[j];
pos1:=pos('-',s);
showmessage(format('s(%d)=%s pos=%d after=%d', [j, s,pos1, length(s)=pos1]);
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 17.11.2012, 14:14   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

[i, s,pos1, length(s)-pos1]
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как зациклить? novuiPolzovatel Помощь студентам 6 23.04.2012 19:06
Зациклить макрос. Константин С Microsoft Office Excel 9 10.11.2011 15:24
Как зациклить код? boldoc Паскаль, Turbo Pascal, PascalABC.NET 23 23.07.2011 13:14
Зациклить галерею krotik_06 JavaScript, Ajax 2 24.06.2011 19:55
Не могу зациклить макрос Frommerrr Microsoft Office Word 2 25.03.2010 10:57