Q&A

  • ListBox에서 데이타 비교에 대해서...
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.
1  COMMENTS
  • Profile
    김규한 2002.02.08 23:36
    음냐.. LoadFromFile 은 하지 않았지만 잘되는것 같은뎅..
    함 메모로 해보시지용.

    제가걍 해본 무식한 소스 입니다.
    좋은 하루요

    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.