![]() |
FTP Client
Ich habe folgendes vor:
Ich möchte ein kleines tool schreiben, wo man sich auf einen server einloggt und man automatisch in ein von mir vorgebenes Verzeichnis gelangt, dort sollte man dann nur einen Ordner anlegen können und in diesen Ordner wechseln können sowie dann Bilder hochladen können, am besten indem man die makierten Bilder vom Desktop in das Programm zieht. Leider hab ich keine idee wie ich das anfangen kann. Vielleicht kann mir da einer ja mal tipps geben oder vielleicht gibt es sowas ja schon. |
Re: FTP Client
Hi
Zitat:
Das Anlegen genau eines Verzeichnisses und das automatische Anmelden sind eher ein Sicherheitsproblem auf dem Server als ein Programmierproblem auf der Client-Seite. Wie soll sich der Benutzer deines Programmes anmelden? Anonym mit Schreibrechten? Oder soll er sich selbst einen user account erzeugen, damit sein Verzeichnis geschützt ist? Wenn du es selbst programmieren willst, dann wirst du dich auch mit Drag&Drop von shell objects befassen müssen. Wenn nicht, so bin ich sicher, dass es (freie) Software zum Aufbau eines Fotoalbums im Web gibt. Hast du schon mal bei SourceForge danach recherchiert? Grüße vom marabu |
Re: FTP Client
erstmal vielen Dank für deine antwort...habe inzwischen angefangen und habe eine Verbindung und ausgabe mit dem Indy FTP erstellen können. Nun habe ich aber noch eine Frage zu
IdFTP1.List(DirectoryListBox.Items); ist es möglich diese Liste zu zerlegen? Also das Datum, der Name usw... |
Re: FTP Client
Klar doch.
Delphi-Quellcode:
marabu
procedure TDemoForm.ListButtonClick(Sender: TObject);
var l: TIdFtpListItems; i: integer; sl: TStringList; begin sl := TStringList.Create; // create raw data container idFTP.Connect(true, -1); // login idFTP.List(sl, '*', true); // get all entries with details l := idFTP.DirectoryListing; // get ref of parsed entries for i := l.Count - 1 downto 0 do // start on safe side if l[i].ItemType = ditDirectory // check for sub directories then sl[i] := l[i].FileName // keep dir entries else sl.Delete(i); // drop other entries idFTP.Disconnect; // logout // ListBox.Items.Assign(sl); // show directory names sl.Free; // drop raw data container end; PS: Indy 9 |
Re: FTP Client
vielen Dank werde ich testen, habe inzwischen noch eine andere Frage und zwar:
Ich habe eine Drag & Drop funktion eingebaut und wenn ich nun 1 Bild oder auch mehrere auf das Programm ziehe lädt das Programm die Bilder zwar hoch, aber das Programm reagiert in der Zeit nicht, wie kann ich das ändern?
Delphi-Quellcode:
procedure TForm1.WMDROPFILES (var Msg: TMessage);
var i, anzahl, size: integer; Dateiname: PChar; begin inherited; anzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, Dateiname, 255); for i := 0 to (anzahl - 1) do begin size := DragQueryFile(Msg.WParam, i , nil, 0) + 1; Dateiname:= StrAlloc(size); DragQueryFile(Msg.WParam,i , Dateiname, size); IdFTP1.Put(Dateiname, ExtractFileName(Dateiname)); ListBox1.items.add(StrPas(Dateiname)); StrDispose(Dateiname); end; DragFinish(Msg.WParam); end; |
Re: FTP Client
Mit
Delphi-Quellcode:
werden die anderen Prozesse ausgeführt, bevor dein Programm weitermacht.
Application.ProcessMessages
Alternativ könntest du für das Hochladen auch einen eigenen Thread verwenden. :) |
Re: FTP Client
vielen Dank, wie erstelle ich einen eigenen Thread? Hab sowas leider noch nicht gemacht.
|
Re: FTP Client
Als erstes musst du eine neue Klasse erzeugen, die du von TThread ableitest.
Delphi-Quellcode:
type
TFTPThread= class(TThread) public procedure Execute; override; end;
Delphi-Quellcode:
Im Deklarierungsteil musst du den Thread anlegen.
procedure TFTPThread.Execute;
begin // Befehle für den Thread // z. B. das Hochladen der Datei end;
Delphi-Quellcode:
Dann im Event den Thread starten.
var
FTPThread: TFTPThread;
Delphi-Quellcode:
FTPThread := TFTPThread.Create(true);
FTPThread.Resume; // Durch das Resume wird der Thread gestartet // Alternativ ein false als Parameter nehmen, // dann wird der Thread sofort gestartet und das "Resume" wird nicht gebraucht FTPThread.Destroy; // Destructor aufrufen Das war's mal ganz kurz. :) |
Re: FTP Client
Zitat:
Edit: Ups, sry, geht ja um was ganz anderes.. :roll: ..hab wieder mal nicht alles gelesen :wall: |
Re: FTP Client
vielen Dank dafür.
Aber ich habe
Delphi-Quellcode:
auf einen Button gelegt und wenn ich den drücke bekomme ich zum testen nichtmal eine showmessage ausgegeben. Ist da noch was falsch?
FTPThread := TFTPThread.Create(true);
FTPThread.Resume; // Durch das Resume wird der Thread gestartet // Alternativ ein false als Parameter nehmen, // dann wird der Thread sofort gestartet und das "Resume" wird nicht gebraucht FTPThread.Destroy; // Destructor aufrufen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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-2025 by Thomas Breitkreuz