Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
DMC
0 / 0 / 0
Регистрация: 15.03.2010
Сообщений: 17
1

Сравнивание 2 текст. файлов

20.05.2010, 00:41. Просмотров 456. Ответов 2
Метки нет (Все метки)

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus;
 
type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    Memo1: TMemo;
    Memo2: TMemo;
    procedure N3Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  f1,f2:textfile;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.N3Click(Sender: TObject);
begin
     memo1.Lines.SaveToFile('c:\file1.txt');
     Memo1.Clear;
 
     memo2.Lines.SaveToFile('c:\file2.txt');
     Memo2.Clear;
end;
 
procedure TForm1.N2Click(Sender: TObject);
begin
memo1.Lines.loadfromfile('c:\file1.txt');
memo2.Lines.loadfromfile('c:\file2.txt');
end;
 
procedure TForm1.N4Click(Sender: TObject);
var
f1,f2:textfile;
s1,s2:string;
z1:integer;
bool:boolean;
begin
AssignFile(f1,'c:\file1.txt');
AssignFile(f2,'c:\file2.txt');
Reset(f1);
Reset(f2);
z1:=1;
while not (Eof(f1)) or(Eof(f2)) do begin
Readln(f1,s1);
Readln(f2,s2);
if (pos(s1,s2)=0) or (pos(s2,s1)=0) then begin
               bool:=false;
               break;
               end
          else z1:=z1+1;
end;
while not (Eof(f1)) or(Eof(f2)) do begin
Readln(f1,s1);
Readln(f2,s2);
if ((s1='') and (s2<>'')) or ((s2='') and (s1<>'')) then z1:=z1+1;
end;
 
if bool then showmessage('компоненты файлов одинаковы')
        else showmessage(inttostr(z1));
 
end;
 
end.
Программа состоит в том что, даны 2 текстовых файла на определить совпадают они или нет, если нет то найти номер строки на которой они несовпадают.

Программа у меня работает если в файлах одинаковое кол-во строк!(без 2 цикла) а второй цикл я ввел для какраз того условия если в файлах разное кол-во строк, но она ваще перестала работать! Прошу помогите!!! программа должна просчитывать все эти варианты!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2010, 00:41
Ответы с готовыми решениями:

сравнивание 2 memo
ребят подскажите пожалуйста как сравнить 2 memo? делаю так begin for i...

Создать обработчик файлов и спарсить определенный текст
необходимо создать обработчик файлов и спарсить определенный текст пример:...

Имена в файлов ListBox, а сам текст в Memo
Проблема такая есть код он выдает все найденые файлы из папки MYFILE и включая...

Проверка на равносильность формул, сравнивание последних столбцов таблиц
Здравствуйте. Проблемка с заданием - нужно проверить равносильны ли 2...

Алгоритм RSA. Если открытый текст больше 20 символов, то текст не расшифровывается
Есть реализованный алгоритм RSA на Delphi. Все работает нормально. Но только...

2
Евгений В
876 / 645 / 130
Регистрация: 01.03.2010
Сообщений: 1,213
20.05.2010, 14:49 2
DMC,


1. строку
Delphi
1
while not (Eof(f1)) or(Eof(f2)) do begin
нужно заменить на
Delphi
1
while not (Eof(f1)) or not  (Eof(f2)) do begin
2. Один из текстов уже закончился, а второй цикл будет пытаться читать дальше.
В первом цикле, после команды Readln постоянно происходил переход на следующую строку. Для второго цикла нужно было или закрыть файлы(CloseFile(f1), CloseFile(f2)) а потом открыть снова (Reset(f1),
Reset(f2)), или же надо было сперва прыгнуть в начало текстов.
(Кстати, в конце работы надо файлы закрывать в любом случае. Это важно)

3. Второй цикл будет работать, пока не закончится один из текстов (если они одинаковые). Как узнать, что один из файлов не закончен?

4. Вместо второго цикла предлагаю такой вариант:
Delphi
1
2
3
 {если до этого строки были одинаковые, но один из файлов еще не закончен}
if (not Eof(f1)) or ( not Eof(f2)) then z1:=z1+1;
//все
0
DMC
0 / 0 / 0
Регистрация: 15.03.2010
Сообщений: 17
24.05.2010, 21:43  [ТС] 3
Спасибо большое! помогла даже только 1 строка исправленная! условие даже писать непришлось
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2010, 21:43

Дан текст. Вычислить сумму чисел, входящих в этот текст
дан текст. вычислить сумму чисел, входящих в этот текст

Как рандомно вывести картинку и текст так, чтобы к определенной картинке относился определенный текст?
Всем привет.Нужна помощь.как рандомно вывести картинку и текст, так чтобы к...

Дан текст из k символов. Вывести на экран только строчные русские буквы, входящие в этот текст.
Помогите пожалуйста написать программу Дан текст из k символов. Вывести на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru