Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

21.07.2008, 13:06
|
|
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме: 4037638
Репутация:
1821
|
|
При запуске считай содержимое вайла в переменную, а затем по таймеру заноси содержимое файла в другую переменную и сравнивай...что сложного?
|
|
|

21.07.2008, 13:49
|
|
Участник форума
Регистрация: 10.08.2006
Сообщений: 147
Провел на форуме: 404152
Репутация:
94
|
|
Сообщение от A_V
Мне надо, чтобы переодически(по таймеру), проверять файл на предмет появления новых строк, если новая строка(или строки) появились - все это занести в переменную к примеру dogma
два TStringList (list1, list2) (по лучше с ним работать чем гемороитс с AssignFile readln и тд и тп), в первый загружаешь один раз файл,
во второй переодически файл перезагружаешь и по циклу сравниваешь строки
for i:=0 to list.count-1 do
begin
//где list1 "исходный" файл
if not (list1.string[i]=list2.string[i]) then
newstring:=newstring+list2.string[i];
//newstring твоя переменная с измененными строками
end;
Код:
var
Form1: TForm1;
num:integer;
newstring:string;
list:TStringList;
//при создании формы
procedure TForm1.........
begin
list.create;
list.LoadFromFile('c:\test.txt');
end;
//событие таймера
procedure TForm1.......
var
list2:TStringList;
i:integer;
begin
list2.create;
list2.loadFromfile('c:\test.txt');
for i:=0 to list1.count-1 do
begin
if not (list1.string[i]=list2.string[i]) then
newstring:=newstring+list2.string[i];
end;
end;
Последний раз редактировалось Exile1985; 21.07.2008 в 13:59..
|
|
|

21.07.2008, 14:45
|
|
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме: 4037638
Репутация:
1821
|
|
Сообщение от Exile1985
два TStringList (list1, list2) (по лучше с ним работать чем гемороитс с AssignFile readln и тд и тп), в первый загружаешь один раз файл,
во второй переодически файл перезагружаешь и по циклу сравниваешь строки
for i:=0 to list.count-1 do
begin
//где list1 "исходный" файл
if not (list1.string[i]=list2.string[i]) then
newstring:=newstring+list2.string[i];
//newstring твоя переменная с измененными строками
end;
Код:
var
Form1: TForm1;
num:integer;
newstring:string;
list:TStringList;
//при создании формы
procedure TForm1.........
begin
list.create;
list.LoadFromFile('c:\test.txt');
end;
//событие таймера
procedure TForm1.......
var
list2:TStringList;
i:integer;
begin
list2.create;
list2.loadFromfile('c:\test.txt');
for i:=0 to list1.count-1 do
begin
if not (list1.string[i]=list2.string[i]) then
newstring:=newstring+list2.string[i];
end;
end;
Не легчели просто для хранения данных использовать string'овые переменные?
их и сравнивать легче и цикл не какой не нужен...
|
|
|

21.07.2008, 15:00
|
|
Участник форума
Регистрация: 10.08.2006
Сообщений: 147
Провел на форуме: 404152
Репутация:
94
|
|
Сообщение от De-visible
Не легчели просто для хранения данных использовать string'овые переменные?
их и сравнивать легче и цикл не какой не нужен...
в смысле? я чтот не доконца что ты имеешь в виду 
в цикле сравниваются сразу строки.
|
|
|

21.07.2008, 18:25
|
|
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме: 4037638
Репутация:
1821
|
|
Сообщение от Exile1985
в смысле? я чтот не доконца что ты имеешь в виду 
в цикле сравниваются сразу строки.
нет это понятно, просто если стринговые переменные сделать там и цикл не нужен, и лишние переменные тоже ни к чему....
|
|
|

21.07.2008, 18:50
|
|
Познающий
Регистрация: 15.02.2008
Сообщений: 98
Провел на форуме: 183980
Репутация:
50
|
|
De-visible имеет в виду что у объектов типа TStringList есть свойство text и надо сравнивать именно эти совйства
if list1.text = list2.text then
и ф топку циклы =)
|
|
|

21.07.2008, 21:52
|
|
Участник форума
Регистрация: 10.08.2006
Сообщений: 147
Провел на форуме: 404152
Репутация:
94
|
|
Сообщение от dos999
De-visible имеет в виду что у объектов типа TStringList есть свойство text и надо сравнивать именно эти совйства
if list1.text = list2.text then
и ф топку циклы =)
ну дык задача то стоит какая..."....и при появлении новой строки автоматом занести ее в переменную?" (почему именно в стринговую переменную хз  , ну автор сам знает ), а через text это никак не прокатить
Последний раз редактировалось Exile1985; 21.07.2008 в 21:56..
|
|
|

21.07.2008, 21:57
|
|
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме: 4037638
Репутация:
1821
|
|
Сообщение от Exile1985
ну дык задача то стоит какая..."....и при появлении новой строки автоматом занести ее в переменную?" (почему именно в стринговую переменную хз  , ну автор сам знает ), а через text это никак не прокатить
если изменится какая либо строка тогда и файл изменится, поэтому мы просто заново скопируем его содержимое вот и все....
|
|
|

22.07.2008, 00:11
|
|
Участник форума
Регистрация: 18.02.2008
Сообщений: 125
Провел на форуме: 562108
Репутация:
107
|
|
спасибо что откликнулись у меня назрел такой вопрос а нельзя сделать так
AssignFile(f, 'C:\111.txt');
readln(f, nigma);
прошло минута
AssignFile(r, 'C:\111.txt');
readln(r, dogma);
if nigma<dogma then
begin
бла бла бла
end
else
begin
дла дла дла
end
|
|
|

22.07.2008, 00:28
|
|
Участник форума
Регистрация: 03.03.2007
Сообщений: 135
Провел на форуме: 833374
Репутация:
124
|
|
2a_v, твой код сравнит только первые строки файла
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|