Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi FTP-Server abfrage? (https://www.delphipraxis.net/111621-ftp-server-abfrage.html)

Jiro 12. Apr 2008 12:50

Re: FTP-Server abfrage?
 
Beitrag kann gelöscht werden.

Jiro 12. Apr 2008 15:06

Re: FTP-Server abfrage?
 
Welche Möglichkeiten eine exe Datei von nem FTP server zu holen gibts noch? mit get steht da immer was mit überladen und normal öffnen klappt auch nicht...

achja, sorry für DoPo

Klaus01 12. Apr 2008 15:12

Re: FTP-Server abfrage?
 
Nun, wenn da etwas mit überladen steht, dann versorgst Du die get Methode
mit den falschen Parametern.

Eine Alternative zu TidFTp.get findest Du hier.

Ansonsten hilft es in der Hilfe nachzuschauen, da würde man
die Aufrufsyntax finden:
Zitat:

Zitat von DelphiHilfe

Retrieves a file using the FTP protocol.

procedure Get(const ASourceFile: string; ADest: TStream); overload;
procedure Get(const ASourceFile: string; const ADestFile: string; const ACanOverwrite: boolean); overload;

Parameters
const ASourceFile: string

File name on the FTP server.

ADest: TStream

File name and optional path on the local machine.

Description
This command downloads a file to the FTP server with the name ASourceFile. Setting the AAppend to True causes the TIdFTP to append the file being downloaded to one which exists on the local machine. The file being downloaded could be either a stream (ADest) or a file name (ADestFile) which TIdFTP can create.

Grüße
Klaus

Jiro 13. Apr 2008 10:51

Re: FTP-Server abfrage?
 
Aber irgendwie versteh ich das nicht, da steht doch filename und den hab ich eingegeben. Was brauch ich denn sonst noch? Die andere Methode ist mir zu kompliziert.

Klaus01 13. Apr 2008 12:50

Re: FTP-Server abfrage?
 
Zitat:

Zitat von Jiro
Aber irgendwie versteh ich das nicht, da steht doch filename und den hab ich eingegeben. Was brauch ich denn sonst noch? Die andere Methode ist mir zu kompliziert.

Na, so schwer ist das doch nicht.
Das Tutorial hast Du dir auch schon angeschaut und auch verstanden?

Delphi-Quellcode:
procedure Get(const ASourceFile: string; ADest: TStream); overload;
Wenn Du get so aufrufst, will es als ASourceFile den Dateinamen und als aDest einen Stream, wenn
Du die Datei speichern willst einen TFileStream ansonsten kannst Du auch einen TMemoryStream nehmen.
Delphi-Quellcode:
var
 myFileStream : TFileStream;

myFileStream := TFileStream.create('hier soll die Datei hin und so soll sie heißen',fmcreate);
idftp1.ChangeDir(...);
idftp1.get('test.exe',myFileStream);
myFileStream.free;
Delphi-Quellcode:
procedure Get(const ASourceFile: string; const ADestFile: string; const ACanOverwrite: boolean); overload;
Wenn Du get mit diesen Parametern aufrufst, will es ASourceFile den Dateinamen auf dem FTP Server
aDest als den Dateinamen wie es auf Deinem PC abgespeichert werden soll.
ACanOverWrite ist die Option ob das File auf Deinem PC überschrieben werden kann.
Würde bei Dir so ausschauen:

Delphi-Quellcode:
idftp1.ChangeDir(..);
idftp.get('Test.exe','hier soll die Datei hin und so soll sie heißen',false);
Grüße
Klaus

Jiro 13. Apr 2008 13:26

Re: FTP-Server abfrage?
 
rSo sieht mein Code jetzt aus:
Delphi-Quellcode:
procedure TForm5.Button1Click(Sender: TObject);
var
  sl: TStringList;
  stream : TfileStream;

begin
idftp.Host:='niklas-nelson.de';
idftp.Username:='...';
idftp.Password:='...';
idftp.Connect();
idftp.ChangeDir('/htdocs/programme/latein');
sl := TStringList.create;
idftp.list(sl,'*.*',false);
if sl.indexOf('test.html') >= 0 then
   begin
     showmessage ('Es gibt ein Update (Version 1.1)');
      stream.Create('test.exe',fmcreate);
      idftp.Get('test.exe', stream);
     idftp.Disconnect;
     stream.Free;
   end
else
   begin
     showmessage ('Ne Ne, kein Update da');
     idftp.Disconnect;
   end;
sl.free;
end;


procedure Get(const ASourceFile: string; const ADestFile: string; const ACanOverwrite: boolean); overload; //die Get procedure funktioniert gar nicht. Aber wenn ich den oberen Teil so lasse kommt wieder eine Exception.
begin
idftp.Host:='niklas-nelson.de';
idftp.Username:='...';
idftp.Password:='...';
idftp.connect ();
idftp.ChangeDir('/htdocs/programme/latein');
idftp.get('Test.exe','test.exe',false);
end;
Ich glaube ich hab da was falsch verstanden oder ist das richtig? Das proggi soll ja auch für alle sein, also muss die Datei im ordner gespeichert werden, wo das Programm drin ist und nicht in einem von mir angegebenen Ordner. Sonst gibts ja noch die Möglichkeit rauszufinden wo das Programm drin ist. Geht das auch noch wenn das installiert ist (ich mache dafür ein Setup (mit INNO)

Klaus01 13. Apr 2008 17:39

Re: FTP-Server abfrage?
 
Delphi-Quellcode:
stream.Create('ExtractFilePath(ParamStr(0))+'test.exe',fmcreate);
So wird die test.exe in das Verzeichnis kopiert wo auch die Aplikation installiert wurde.

Eine kleine Anmerkung habe ich noch, Du schließt darauf das ein Update zur Verfügung steht
wenn eine bestimmte Datei auf dem FTP-Server liegt.
Dabei wird nicht überprüft welche Version die Aplikation gerade hat.
Habe ich z.B. 1.1 und das File liegt auf dem Server, dann wird mir
ein Update auf 1.1 angeboten. Die Version habe ich aber schon.


Grüße
Klaus

Jiro 13. Apr 2008 18:21

Re: FTP-Server abfrage?
 
Ich habe mir das so gedacht, dass ich in der aktuellen Version 1.0 nach der Datei plan11.html auf dem Server suche. Und in der Version 1.1 ändere ich es so um, dass das programm nach der Version 1.2 sucht.

Klaus01 14. Apr 2008 08:15

Re: FTP-Server abfrage?
 
Zitat:

Zitat von Jiro
Ich habe mir das so gedacht, dass ich in der aktuellen Version 1.0 nach der Datei plan11.html auf dem Server suche. Und in der Version 1.1 ändere ich es so um, dass das programm nach der Version 1.2 sucht.

Hast Du dann nicht das Problem wenn der User z.B. Version 1.0
und nach einiger zeit nicht auf Version 1.1 updaten will.
Nun kommt die Version 1.2 heraus, der User will nun ein update
durchführen. Die Folge ist, er muß erst ein Update auf 1.1 machen
danach kann er erst ein Update auf 1.2 machen.

Wäre es nicht sinnvoller eine "VersionsInfo.txt" Datei auf dem
FTP-Server zu halten. Hier steht die letzte Version drin.

Der User lädt sich die Datei, schaut hinein und vergleicht
die Versionsnummer mit der Version seines Programms.
Ist seine Versionsnummer kleiner als die auf dem Server
liegende bekommt er den Hinweis auf eine neuere Version
angezeigt.

Grüße
Klaus

Jiro 14. Apr 2008 16:15

Re: FTP-Server abfrage?
 
Gut, wie kann man das realisieren? Wieder mit ftp.get? Und dann in der Datei suchen?
achja:
stream.Create('ExtractFilePath(ParamStr(0))+'test. exe',fmcreate);

Es gibt keine überladene Version von create, die man mit diesen Parametern aufrufen kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:57 Uhr.
Seite 4 von 5   « Erste     234 5      

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-2025 by Thomas Breitkreuz