안녕하세요...여러고수님들의 도움을 받고자 이렇게 글을 올립니다..
지금 자동 업그레이드 되는 프로그램을 만들어야 하는데..
로컬에 있는 날짜랑 서버에 있는 날짜랑 비교해서 서버에 있는 날짜가 최근이면 그걸 다운로드 해서 실행 시키는 프로그램을 만들고 있습니다...
버튼 이벤트는 사용하지 않고 프로그램이 실행되면 바로 비교해서 날짜 비교해서 최근이면 다운로드해서 받고 아니면 그냥 실행파일(****.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.