Q&A

  • 서버에서 날짜 불러 오는거 좀 도와 주세요...
안녕하세요...여러고수님들의 도움을 받고자 이렇게 글을 올립니다..

지금 자동 업그레이드 되는 프로그램을 만들어야 하는데..

로컬에 있는 날짜랑 서버에 있는 날짜랑 비교해서 서버에 있는 날짜가 최근이면 그걸 다운로드 해서 실행 시키는 프로그램을 만들고 있습니다...

버튼 이벤트는 사용하지 않고 프로그램이 실행되면 바로 비교해서 날짜 비교해서 최근이면 다운로드해서 받고 아니면 그냥 실행파일(****.exe)를 찾아서 실행 시키는 프로그램입니다...

지금 로컬에 있는 날짜는 구했는데..서버에서 필요한 파일의 날짜만 구할수가 없어서 이렇게 도움을 구하고 있습니다...

여러 고수님들 제발 좀 도와 주세요...ㅜㅜ

소스는 다음과 같이 있습니다...메모는 사용하지 않고 그냥 닫아 두었습니다..

unit Unit2;



interface



uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ComCtrls, StdCtrls, Psock, NMFtp, ExtCtrls;



type

TForm1 = class(TForm)

NMFTP1: TNMFTP;

ListBox1: TListBox;

StatusBar1: TStatusBar;

Powersock1: TPowersock;

ProgressBar1: TProgressBar;

Label1: TLabel;

Memo1: TMemo;

Memo2: TMemo;

Timer1: TTimer;

Panel1: TPanel;

procedure FormCreate(Sender: TObject);

procedure NMFTP1Connect(Sender: TObject);

procedure NMFTP1Disconnect(Sender: TObject);

procedure NMFTP1Error(Sender: TComponent; Errno: Word; Errmsg: String);

procedure NMFTP1ListItem(Listing: String);

procedure ListBox1DblClick(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure ListBox1Click(Sender: TObject);

procedure NMFTP1Status(Sender: TComponent; Status: String);

procedure NMFTP1Success(Trans_Type: TCmdType);

procedure Timer1Timer(Sender: TObject);

procedure FormDestroy(Sender: TObject);

procedure FormShow(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

function GetFileDate(TheFileName: string): string;

end;



var

Form1: TForm1;



implementation



{$R *.DFM}



procedure TForm1.FormCreate(Sender: TObject);

var

r_Time, s_Time : string;

begin

with NMFTP1 do

begin

try

Host := '211.50.37.113';

UserId := 'cars';

Password := 'cars';

Connect;

finally

{ ListBox1.Items.Clear;

ChangeDir('/export/home/cars');

List; }

r_Time := GetFileDate('D:Na21Cars.exe');

s_Time := GetFileDate('/export/home/cars');

end;



if s_Time > r_Time then Exit;

begin

ListBox1DblClick(Sender);

end;

end;

Timer1.Enabled := false;

end;



procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

NMFTP1.DisConnect;

Panel1.Visible := False;

end;



procedure TForm1.NMFTP1Connect(Sender: TObject);

begin

StatusBar1.SimpleText := 'Connected';

end;



procedure TForm1.NMFTP1Disconnect(Sender: TObject);

begin

StatusBar1.SimpleText := 'Dis Connected';

end;



procedure TForm1.NMFTP1Error(Sender: TComponent; Errno: Word;

Errmsg: String);

begin

StatusBar1.SimpleText := Errmsg;

end;



procedure TForm1.NMFTP1ListItem(Listing: String);

begin

ListBox1.Items.Add(Listing);

end;



procedure TForm1.ListBox1DblClick(Sender: TObject);

var

p: Integer;

tmp, s: String;

begin

if ListBox1.ItemIndex = -1 then Exit;



tmp := ListBox1.Items[ListBox1.ItemIndex];



if Copy(tmp,1,1) = 'd' then

begin

ListBox1.Items.Clear;

s := '';

while tmp <> '' do

begin

p := Pos(' ', tmp);

if p > 0 then

begin

tmp := Trim(Copy(tmp, p+1, Length(tmp)-p));

end else

begin

s := tmp;

tmp := '';

end;

end;



if s <> '' then

begin

NMFTP1.ChangeDir(s);

NMFTP1.List;

end;

end else



if Copy(tmp,1,1) = '-' then

begin

while tmp <> '' do

begin

p := Pos(' ', tmp);

if p > 0 then

begin

tmp := Trim(Copy(tmp, p+1, Length(tmp)-p));

end else

begin

s := tmp;

tmp := '';

end;

end;



if s <> '' then

begin

Timer1.Enabled := true;

NMFTP1.Mode(MODE_BYTE);

NMFTP1.Download(s, 'd:Na21'+s);

end;

end;

end;



procedure TForm1.ListBox1Click(Sender: TObject);

var

i, p: Integer;

tmp, s: String;

begin

if ListBox1.ItemIndex = -1 then Exit;



tmp := ListBox1.Items[ListBox1.ItemIndex];

i := 0;



s := '';

while tmp <> '' do

begin

Inc(i);

p := Pos(' ', tmp);

if p > 0 then

begin

s := Copy(tmp, 1, p-1);

tmp := Trim(Copy(tmp, p+1, Length(tmp)-p));

if i = 5 then

begin

Label1.Caption := s;

ProgressBar1.Position := 0;

ProgressBar1.Max := StrToIntDef(s,0);

tmp := '';

end;

end else

begin

tmp := '';

end;

end;

end;



procedure TForm1.NMFTP1Status(Sender: TComponent; Status: String);

begin

Memo1.Lines.Add(Status);

end;



procedure TForm1.NMFTP1Success(Trans_Type: TCmdType);

begin

if Trans_Type = cmdUpload then

begin

Memo2.Lines.Add('Upload');

Timer1.Enabled := false;

end;

end;



procedure TForm1.Timer1Timer(Sender: TObject);

var

n: Integer;

begin

with ProgressBar1 do

begin

n := Position + 10;

if n >= max then n := 0;

Position := n;

Update;

end;

end;









procedure TForm1.FormDestroy(Sender: TObject);

begin

Screen.OnActiveFormChange := nil;

end;



function TForm1.GetFileDate(TheFileName: string): string;

var

FHandle: integer;

begin

FHandle := FileOpen(TheFileName, 0);

try

Result := DateTimeToStr(FileDateToDateTime(FileGetDate(FHandle)));

finally

FileClose(FHandle);

end;

end;







procedure TForm1.FormShow(Sender: TObject);

begin

Panel1.Visible := True;

end;



end.

0  COMMENTS