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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2009, 18:26   #1
ForzaJuve
Пользователь
 
Регистрация: 27.09.2008
Сообщений: 38
По умолчанию Сравнение 2 файлов

Здравствуйте.
Возникла проблема со сравнением 2 текстовых файлов. Суть проблемы - не могу разобраться с выводом "разницы" (отличий) в этих файлах, тоесть:
Имеется файл 1 с содержанием, к примеру : "яШяа JFIF"
и файл 2 : "яШяа JFIF XX "

Не могу разобраться как, посредством Делфи, мне создать 3 файл (или хотябы занести в Memo и тд.) их разницу, а точнее " XX " ??
Зарание спасибо...

P.S: файлы состоят из 1 строки...

Последний раз редактировалось ForzaJuve; 09.06.2009 в 18:34.
ForzaJuve вне форума Ответить с цитированием
Старый 09.06.2009, 18:59   #2
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
По умолчанию

Прочитай два файла в две строчки а потом определи какая длиннее.
В цикле for i:=1 to min do проверяй два символа из строчек if s1[i]<>s2[i] then s3:=s3+s2[i];
А затем прибавь строке s3 все символы большей строки начиная с символа i+1
pomoshnic вне форума Ответить с цитированием
Старый 09.06.2009, 19:09   #3
ForzaJuve
Пользователь
 
Регистрация: 27.09.2008
Сообщений: 38
По умолчанию

огромное спасибо
ForzaJuve вне форума Ответить с цитированием
Старый 09.06.2009, 20:39   #4
ForzaJuve
Пользователь
 
Регистрация: 27.09.2008
Сообщений: 38
По умолчанию

Не подскажите почему выбивает ошибку?


Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
   i : longint;
begin

s2:=s1;
s1:='';
if GetTextFromFile('c:\Documents and Settings\User\Рабочий стол\1.txt', s1) then
for i:=0 to 200 do
begin
 if s1[i]<>s2[i] then
 begin
 s3:=s3+s1[i];
 end;
 Memo1.Text:=s3;
end;
end;
ForzaJuve вне форума Ответить с цитированием
Старый 09.06.2009, 21:24   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

строки начинаются с 1
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.06.2009, 21:28   #6
ForzaJuve
Пользователь
 
Регистрация: 27.09.2008
Сообщений: 38
По умолчанию

все равно ошибка
ForzaJuve вне форума Ответить с цитированием
Старый 09.06.2009, 21:58   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

GetTextFromFile, а что это?

я бы написал так:
на форме три мемо(1:текст который смотрим 2:с которым сравниваем 3:в нем смотрим разницу) и кнопка
на нажатие кнопки вешаем код:
Код:
var i:integer;
begin
 Memo3.Text:='';
 for i:=1 to length(Memo1.Text) do if Memo1.Text[i]<>Memo2.Text[i] then Memo3.Text:=Memo3.Text+Memo1.Text[i];
end;
надеюсь загрузить в мемо текст сами сможете(можно заменить мемо на простой string)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.06.2009, 22:10   #8
ForzaJuve
Пользователь
 
Регистрация: 27.09.2008
Сообщений: 38
По умолчанию

Код:
function GetTextFromFile(AFile: string; var Returnstring: string): Boolean;
 var
   FileStream: TFileStream;
 begin
   Result := False;
   if not FileExists(AFile) then Exit;
   FileStream := TFileStream.Create(AFile, fmOpenRead);
   try
     if FileStream.Size <> 0 then
     begin
       SetLength(Returnstring, FileStream.Size);
       FileStream.Read(Returnstring[1], FileStream.Size);
       Result := True;
     end;
   finally
     FileStream.Free;
   end;
 end;

Огромное спасибо, сейчас попробую...
ForzaJuve вне форума Ответить с цитированием
Старый 09.06.2009, 22:41   #9
san72
Форумчанин
 
Регистрация: 04.06.2008
Сообщений: 102
По умолчанию

Надо считать оба файла определить какая строка будет больше как тут уже написали а чтобы вывести в memo или ещё куда можно использовать COPY и POS, скопировать из большей строки всё что после пробела - это и будут эти "XX"
Keep it simple, stupid
san72 вне форума Ответить с цитированием
Старый 09.06.2009, 23:34   #10
ForzaJuve
Пользователь
 
Регистрация: 27.09.2008
Сообщений: 38
По умолчанию

всем спасибо - получилось
ForzaJuve вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа получения списка файлов директории и изменения атрибутов файлов roma86 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 09.06.2009 09:08
чтение файлов и сравнение с условиями Neymexa Общие вопросы .NET 2 14.04.2009 19:05
Нужна помощь: выбор файлов исходя из имени файлов Antik163RUS Помощь студентам 4 19.06.2008 21:20
Сравнение 2-х файлов asale Microsoft Office Excel 17 03.06.2007 15:58
Сравнение текстовых файлов BR17UY Общие вопросы Delphi 15 07.05.2007 20:18