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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2009, 13:17   #21
мимо
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 61
По умолчанию

и все таки не работает открыть файл одной кнопкой а применить условие второй

Код:
var
 Form1: TForm1;
 F:TextFile;
implementation

//открыть
procedure TForm1.Button1Click(Sender: TObject);
 var
   EditFile: string;
begin
 if OpenDialog1.Execute then
  begin
   EditFile:=OpenDialog1.FileName;
   Memo1.Lines.LoadFromFile(EditFile);
  end;
end;

//условие
procedure TForm1.Button2Click(Sender: TObject);
var
 str:string;
begin
 Readln(F, str);
 if (pos ('ф.и.о.',str)<>0) then
  memo1.Lines.Add(str);
 CloseFile(F);
end;
не выполняется условие - ошибка. помогите!

Последний раз редактировалось мимо; 18.06.2009 в 14:05.
мимо вне форума Ответить с цитированием
Старый 18.06.2009, 13:26   #22
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Ты до этого циклом пробежался до конца файла, а тебе то надо в начало
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
str:string;
begin
Reset(F)
Readln(F, str);
if (pos ('ф.и.о.',str)<>0) then
memo1.Lines.Add(str);
CloseFile(F);
end;
Ой да ты его закрыл же.. да не суть всё равно также

Последний раз редактировалось vovk; 18.06.2009 в 13:42.
vovk вне форума Ответить с цитированием
Старый 18.06.2009, 14:07   #23
мимо
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 61
По умолчанию

я ошибся открываю я файл так:
Код:
var
 Form1: TForm1;
 F:TextFile;
implementation

//открыть
procedure TForm1.Button1Click(Sender: TObject);
 var
   EditFile: string;
begin
 if OpenDialog1.Execute then
  begin
   EditFile:=OpenDialog1.FileName;
   Memo1.Lines.LoadFromFile(EditFile);
  end;
end;
как к нему применить условие со второй кнопкой (см. выше)?
мимо вне форума Ответить с цитированием
Старый 18.06.2009, 14:19   #24
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Ну раз файл у тебя уже в мемо, то там его обрабатывать и надо
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
i:Integer;
begin
for i:=memo1.Lines.Count-1 downto 0 do
if (pos('ф.и.о.',memo1.Lines.Strings[i]))=0 then
memo1.Lines.Delete(i);
end;
както так раз инфо уже там то просто удаляем ненужные строки
vovk вне форума Ответить с цитированием
Старый 18.06.2009, 14:28   #25
мимо
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 61
По умолчанию

спасибо. заработало, а в догонку вопрос:
удаление дублей
Код:
 procedure TForm1.Button1Click(Sender: TObject);
var
i,j: Integer;
begin
for i := 0 to Memo1.Lines.Count - 1 do
for j := 0 to Memo1.Lines.Count - 1 do
if (Memo1.Lines.Strings[i] = Memo1.Lines.Strings[j]) and (i <> j) then
Memo1.Lines.Delete(j);
end;
но удаляет не все. часть остается, приходится нажимать еще раз
в чем подвох?
мимо вне форума Ответить с цитированием
Старый 18.06.2009, 14:52   #26
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

и что даже без ошибок проходит если удаляет? хмм

а вообще представляю примерно так
Код:
var
i,j: Integer;
begin
i:=0;
while not (i>=(Memo1.Lines.Count - 1)) do
begin
for j:=memo1.Lines.Count-1 downto i+1 do
if (Memo1.Lines.Strings[i] = Memo1.Lines.Strings[j]) then
Memo1.Lines.Delete(j);
inc(i)
end;

end;
vovk вне форума Ответить с цитированием
Старый 18.06.2009, 15:01   #27
мимо
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 61
По умолчанию

да. без ошибок. просто при выполнении оставались часть дублей.
а как добавить еще одно условие к:
Код:
if (pos('ф.и.о.',memo1.Lines.Strings[i]))=0 then
кроме по 'ф.и.о.' еще и 'адрес'?

Последний раз редактировалось мимо; 18.06.2009 в 15:34.
мимо вне форума Ответить с цитированием
Старый 18.06.2009, 16:24   #28
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

зависит от того что ожидаем увидеть, 'ф.и.о.' и 'адрес' в 1 строке, тогда надо
Код:
if ((pos('ф.и.о.',memo1.Lines.Strings[i]))=0) or  ((pos('адрес',memo1.Lines.Strings[i]))=0) then
если может быть 'ф.и.о.' или 'адрес' тогда
Код:
if ((pos('ф.и.о.',memo1.Lines.Strings[i]))=0) and ((pos('адрес',memo1.Lines.Strings[i]))=0) then

Последний раз редактировалось vovk; 18.06.2009 в 17:15. Причина: поправил
vovk вне форума Ответить с цитированием
Старый 18.06.2009, 18:14   #29
мимо
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 61
По умолчанию

точно. я просто скобки забыл добавить
а как сделать?
вот открыл я файл в Memo1. (одной кнопкой)
применяю к нему условие в этом же Memo1 (другой кнопкой) и на экране остается результат этого условия, т.е. сам изначальный файл убирается. как сделать, чтобы изначальный файл остался, при том, что у меня выполняется условие и автоматически сохраняет в другой файл? т.е. остается не тронутым

Последний раз редактировалось мимо; 18.06.2009 в 18:18.
мимо вне форума Ответить с цитированием
Старый 18.06.2009, 18:18   #30
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

с самим файлом ничего не происходит, ты вообще к нему обращаешся 1 раз и то чтоб считать информацию в мемо. и работаеш только с содержимым мемо.
или я не понял вопроса...
vovk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа С TXT ken8888 Помощь студентам 11 02.06.2009 10:04
Работа с txt файлами! (C)stalin(Cpp) Общие вопросы C/C++ 5 25.10.2008 17:19
работа с txt файлом ShenDy Общие вопросы C/C++ 1 08.04.2008 22:55
Работа с текстовыми TXT MAKEDON Общие вопросы Delphi 2 20.12.2007 04:30
Работа со строками txt документa Paul Общие вопросы Delphi 5 11.04.2007 12:47