![]() |
automatisches verschicken einer datei
hi,
versuche gerade ein prog zu coden welches automatisch eine log datei aller std. auf ein server transferiert. den timer hab ich gesetzt, steht auf false soll aber beim programm start auf true gesetzt werden. meine frage jetzt ist form.create richtig um den timer bei programmstart auf true zusetzen??? versenden geht auch noch nicht so recht :( wie sag ich den prog das er die datei aus dem ordner nehmen soll wo das prog selber drin liegt, ohne über ein button zu gehen.
Delphi-Quellcode:
danke schonmal für eure hilfe :)
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdAntiFreezeBase, IdAntiFreeze, ExtCtrls, IdComponent, IdTCPConnection, IdTCPClient, IdFTP, StdCtrls; type TForm1 = class(TForm) Timer1: TTimer; IdAntiFreeze1: TIdAntiFreeze; IdFTP1: TIdFTP; Label1: TLabel; procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Timer1: TTimer; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin timer1.enabled := true; end; procedure TForm1.Timer1Timer(Sender: TObject); begin IdFTP1.Host := '192.168.0.1'; IdFTP1.Username := 'paul'; IdFTP1.Password := '20'; IdFTP1.Connect; IdFTP1.ChangeDir('/'); IdFTP1.Put('log.log'); IdFTP1.Quit; IdFTP1.Disconnect; end; end. mfg Paul |
Re: automatisches verschicken einer datei
hi paul
verständlich dass er die datei nicht schickt, er weiss ja nicht woher nehmen. wenn die datei wie beschrieben im gleichen ordner wie die exe liegt, kannst du folgendes verwenden:
Delphi-Quellcode:
damit bekommt idFTP den gesamten pfad deines log-files.
IdFTP1.Put(ExtractFilePath(paramstr(0)) + 'log.log')
zu deiner timer-frage (ich bin mir nicht ganz sicher wie du es meinst): du startest dein programm am morgen (oder sonst wann) und dann lässt du es den ganzen tag laufen? wenn ja, sollte das problem mit dem timer gar kein problem sein :). das müsste eigentlich funktionieren. gruss, dave |
Re: automatisches verschicken einer datei
hmmm
irgendwie versendet er immer noch nix. kann das eventuell am timer liegen?? mfg |
Re: automatisches verschicken einer datei
wie goch hast du den timer denn stehen?
Alex |
Re: automatisches verschicken einer datei
zum testen auf = interval:10
bei events - on timer = formcreate mfg |
Re: automatisches verschicken einer datei
das heisst alle 10ms?
Probier doch mal eine Minute oder 5 Minuten oder so... Vielleicht ist er einfach zu langsam um das zu verarbeiten... ;) MfG Florian :hi: |
Re: automatisches verschicken einer datei
versuchs doch mal so...
Delphi-Quellcode:
Gruß
procedure TForm1.FormCreate(Sender: TObject);
begin timer1.interval := 300000; timer1.enabled := true; end; procedure TForm1.Timer1Timer(Sender: TObject); begin IdFTP1.Host := 'ftp.domain.de'; IdFTP1.User := 'benutzername'; IdFTP1.Password := 'password'; IdFTP1.Connect; IdFTP1.ChangeDir('/'); IdFTP1.Put('c:\test.txt','test.txt'); IdFTP1.Quit; IdFTP1.Disconnect; end; Alex |
Re: automatisches verschicken einer datei
irgendwas stimmt nicht, der versendet immer noch nicht das files.
Code:
wie gesagt das file liegt im selben ordner wie das prog. das prog soll sich automatisch das file suchen und versenden.
procedure TForm1.Timer1Timer(Sender: TObject);
begin IdFTP1.Host := 'ip'; //IDFTP1.passive := false; IdFTP1.Username := 'user'; IdFTP1.Password := 'pass'; IdFTP1.Connect; IdFTP1.ChangeDir('/'); //IdFTP1.TransferType := ftBinary; IdFTP1.Put(ExtractFilePath(paramstr(0)) + 'log.log'); IdFTP1.Quit; IdFTP1.Disconnect; end; |
Re: automatisches verschicken einer datei
versuche mal:
Code:
[..]
IdFTP1.Put(ExtractFilePath(paramstr(0)) + 'log.log','log.log'); [..] |
Re: automatisches verschicken einer datei
Zitat:
Die Begründung habe ich mal gelesen aber leider wieder vergessen. |
Re: automatisches verschicken einer datei
nur mal so, weiss nicht ob so was möglich ist:
könnte es sein, dass du die übertragung abbrichst, bevor das file drüben ist? du schliesst die verbindung ja sofort wieder... gruss, (ein unsicherer) dave |
Re: automatisches verschicken einer datei
Ihr müsst natürlich prüfen, ob die lokale Datei überhaupt existiert.
Delphi-Quellcode:
Und zusätzlich könnte man prüfen, ob die Datei noch im Zugriff ist:
procedure TForm1.Timer1Timer(Sender: TObject);
var srcFile: string; // Und nicht so geizig mit lokalen Variablen sein!!! begin srcFile := 'log.log'; if not FileExists(srcFile) then begin Caption := Format('Datei %s nicht gefunden', [srcFile]); Exit; end; .... IdFTP1.Put(srcFile); .... end;
Delphi-Quellcode:
Ausserdem muss man natürlich die Events von IdFTP1 benutzen (Zumindest bei OnConnect).
function FileIsClosed(const filename:string):Boolean;
var hnd: THandle; begin hnd := CreateFile(PChar(filename), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); result := hnd <> INVALID_HANDLE_VALUE; CloseHandle(hnd); end; |
Re: automatisches verschicken einer datei
besten dank es funktioniert jetzt :) lag vielleicht wirklich am zu schnellem timer :)
ich will ja dieses prog auf ein server legen. dazu muss man ja die execute progarmmieren damit man das prog starten kann. hat das schon mal einer gemacht ??? mfg Paul |
Re: automatisches verschicken einer datei
Die was muss man programmieren? Du bist dir bewußt, dass ein solches Delphi Programm nur auf einen Windows Server läuft?6 Und falls es nicht dein privater Server ist, glaube ich kaum, dass der Webhoster eigene Programme zu läßt.
|
Re: automatisches verschicken einer datei
doch ich hab ein gemieteten server mit root zugriff und da kann man programme starten :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz