Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi FTP Client (https://www.delphipraxis.net/51263-ftp-client.html)

Brueckenhauer 9. Aug 2005 12:59


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.

marabu 10. Aug 2005 21:15

Re: FTP Client
 
Hi

Zitat:

Zitat von Brueckenhauer
Leider hab ich keine idee wie ich das anfangen kann.

Ich schlage vor, dass du dein Projekt zuerst in Teilprojekte zerlegst. Bei der Kommunikationstechnik hast du dich ja schon in Richtung FTP bewegt - laut Titel. Der Indy FTP-Client sollte dich vor keine größeren Probleme stellen und Hilfe hier im Forum ist dir so gut wie sicher.

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

Brueckenhauer 10. Aug 2005 21:43

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...

marabu 11. Aug 2005 07:01

Re: FTP Client
 
Klar doch.

Delphi-Quellcode:
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;
marabu

PS: Indy 9

Brueckenhauer 11. Aug 2005 09:12

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;

ste_ett 11. Aug 2005 09:21

Re: FTP Client
 
Mit
Delphi-Quellcode:
Application.ProcessMessages
werden die anderen Prozesse ausgeführt, bevor dein Programm weitermacht.

Alternativ könntest du für das Hochladen auch einen eigenen Thread verwenden. :)

Brueckenhauer 11. Aug 2005 09:44

Re: FTP Client
 
vielen Dank, wie erstelle ich einen eigenen Thread? Hab sowas leider noch nicht gemacht.

ste_ett 11. Aug 2005 10:38

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:
procedure TFTPThread.Execute;
begin
// Befehle für den Thread
// z. B. das Hochladen der Datei
end;
Im Deklarierungsteil musst du den Thread anlegen.
Delphi-Quellcode:
var
  FTPThread: TFTPThread;
Dann im Event den Thread starten.
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. :)

Kompon Ente 11. Aug 2005 10:44

Re: FTP Client
 
Zitat:

Zitat von Brueckenhauer
vielen Dank, wie erstelle ich einen eigenen Thread? Hab sowas leider noch nicht gemacht.

lol? Ja nee ist klar...was ist denn das hier dann? :shock:

Edit: Ups, sry, geht ja um was ganz anderes.. :roll: ..hab wieder mal nicht alles gelesen :wall:

Brueckenhauer 11. Aug 2005 17:06

Re: FTP Client
 
vielen Dank dafür.
Aber ich habe
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
auf einen Button gelegt und wenn ich den drücke bekomme ich zum testen nichtmal eine showmessage ausgegeben. Ist da noch was falsch?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:31 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz