Text파일의 길이는 액 500라인정도 되는 파일를 리스트박스에서 해당 데이타를 읽어 비교하는 프로그램입니다.하지만 어찌 된건지 앞 몇줄은 비교가 되는데 뒤(약 300라인)부턴 비교를 하지 못합니다. 오무지 왜 그런지 모르겠습니다
고수님들께 다시 한번 부탁드립니다.
Sample.txt의 내용
150.236.25.45 Model_1
150.478.10.126 Model_2
147.15.1.102 Model_1
.
.
.
.
784.456.25.126
해당 Procedure입니다.
procedure TForm1.Update_Serch;
Var
I : Integer;
FileName1 : String;
FileName2 : String;
bpip : String;
Upip : String;
CompIp : String;
Model_Name : string;
Model_Name1: String;
begin
i := 0;
FileName1 := ExtractFilePath(Application.Exename)+'HanvitIp.txt';
FileName2 := ExtractFilePath(Application.Exename)+'bpip.txt';
if FileExists(FileName1) Then
begin
ListBox2.Items.LoadFromfile(fileName1);
ListBox3.Items.LoadFromfile(fileName2);
bpip := Trim(Copy(ListBox2.Items[0], 1,19));
end;
for i := 0 to ListBox3.items.count -1 Do
begin
Upip := Trim(Copy(ListBox3.Items[i], 1, 19));
if bpip = Upip Then
begin
Model_Name := Trim(Copy(ListBox3.Items[i], 21, 10));
Model_Name := Model_Name + '.exe';
Label7.Caption := Model_Name;
Label9.Caption := Upip;
if FileExists(MOdel_Name) Then
begin
Copy_yn := True;
CopyFile(PChar(Model_Name), PChar('tcpip.exe'), False);
{ DeleteFile(PChar(ExtractFilePath(Application.Exename)+'ut001.exe'));
DeleteFile(PChar(ExtractFilePath(Application.Exename)+'ut002.exe'));
DeleteFile(PChar(ExtractFilePath(Application.Exename)+'ut003.exe'));
DeleteFile(PChar(ExtractFilePath(Application.Exename)+'ut005.exe')); }
end else
begin
Copy_yn := False;
Application.Terminate;
end
end;
end;
end;
end.
함 메모로 해보시지용.
제가걍 해본 무식한 소스 입니다.
좋은 하루요
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
ListBox1: TListBox;
ListBox2: TListBox;
Label5: TLabel;
Label6: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i : integer;
begin
for i := 0 to 499 do
begin
memo1.Lines.Add('line '+ inttostr(i));
memo2.Lines.Add('line '+ inttostr(i));
if (i = 10) or (i = 200) or (i = 400) then
listbox1.Items.Add('linezz '+ inttostr(i))
else
listbox1.Items.Add('line '+ inttostr(i));
if (i = 11) or (i = 201) or (i = 401) then
listbox2.Items.Add('linezz '+ inttostr(i))
else
listbox2.Items.Add('line '+ inttostr(i));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
mccnt , mncnt, lccnt, lncnt, i : integer;
begin
mccnt := 0;
mncnt := 0;
for i := 0 to 499 do
begin
if memo1.Lines.Strings[i] = memo2.Lines.Strings[i] then
inc(mccnt)
else
inc(mncnt);
// if listbox1.Items[i]{.Strings[i]} = listbox2.Items[i]{.Strings[i]} then
if listbox1.Items.Strings[i] = listbox2.Items.Strings[i] then
inc(lccnt)
else
inc(lncnt);
end;
label3.Caption := inttostr(mncnt); // 틀린거
label4.Caption := inttostr(mccnt); // 맞는거
label5.Caption := inttostr(lncnt); // 틀린거
label6.Caption := inttostr(lccnt); // 맞는거
end;
end.