AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi [Indy/FTP]Problem mit Datei runterladen
Thema durchsuchen
Ansicht
Themen-Optionen

[Indy/FTP]Problem mit Datei runterladen

Ein Thema von NeMesis44 · begonnen am 20. Apr 2006 · letzter Beitrag vom 21. Apr 2006
Antwort Antwort
NeMesis44

Registriert seit: 18. Apr 2006
Ort: Berlin
10 Beiträge
 
#1

[Indy/FTP]Problem mit Datei runterladen

  Alt 20. Apr 2006, 18:32
Hallo Delphipraxis

Ich bin hier neu und hab ein Problem mit meinem FTP Client

Ich möchte gerne wenn mann auf eine Datei klickt das die sich runterladet und wenn auf einen Ordner klickt das er dann in den Ordner geht das geht ja soweit nur nicht beides zusammen

Hier mein Source :

Delphi-Quellcode:
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdFTP, MPlayer, BassdllPlayer, ComCtrls;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    GroupBox2: TGroupBox;
    Button3: TButton;
    Panel1: TPanel;
    IdFTP1: TIdFTP;
    BassdllPlayer1: TBassdllPlayer;
    Button4: TButton;
    SaveDialog1: TSaveDialog;
    OpenDialog1: TOpenDialog;
    Button5: TButton;
    ProgressBar1: TProgressBar;
    Edit4: TEdit;
    ListBox2: TListBox;
    SaveDialog2: TSaveDialog;
    Button6: TButton;
    Button7: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure Button4Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure ListBox2DblClick(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation


{$R *.dfm}

function IsFile(const Filename : String) : Boolean;
var
  IsFile: Boolean;
begin
  if FileExists(Filename) then
  begin
    Result := true;
  end
  else
  begin
    Result := false;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
IDFTP1.Host := edit1.text;
IDFTP1.Username := edit2.text;
IDFTP1.Password := edit3.text;
IDFTP1.Passive := true;
IDFTP1.Connect();
idftp1.list (listbox2.items,'',false);
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  BassDLLPlayer1.LoadFromFile('C:\Dokumente und Einstellungen\Bass Sultan\Eigene Dateien\sound1.wav');
    BassDLLPlayer1.Volume := 90;
      BassDLLPlayer1.play;
end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
  BassDLLPlayer1.LoadFromFile('C:\Dokumente und Einstellungen\Bass Sultan\Eigene Dateien\sound1a.wav');
    BassDLLPlayer1.Volume := 90;
      BassDLLPlayer1.play;
end;

procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
  BassDLLPlayer1.LoadFromFile('C:\Dokumente und Einstellungen\Bass Sultan\Eigene Dateien\sound1.wav');
    BassDLLPlayer1.Volume := 90;
      BassDLLPlayer1.play;
end;

procedure TForm1.Button4Click(Sender: TObject);
  var s:string;
begin
 s:='New Folder';
  if inputQuery('New Folder','New Folder Name',s) then
    begin
      idftp1.MakeDir(s);
    end;
    IdFTP1.List(ListBox2.Items);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
idftp1.Disconnect;
listbox2.Clear;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
 if openDialog1.Execute then
    begin
        idftp1.Put(OpenDialog1.FileName,extractFilename(opendialog1.FileName));
    IdFTP1.List(ListBox2.Items);
    end;
end;



procedure TForm1.ListBox2DblClick(Sender: TObject);
begin
if Listbox2.ItemIndex <> - 1 then
  begin
   if IsFile(ListBox2.Items[ListBox2.ItemIndex]) then // Hier ist es eine Datei
    begin
      // Hier kommt dein Code zum eine Datei runterzuladen
    end
    else
    begin
      IDFTP1.ChangeDir(Listbox2.Items[Listbox2.ItemIndex]); // Verzeichnis wechseln
      idftp1.list(listbox2.items,'',false);
    end;
  end;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
IdFTP1.ChangeDir(Edit4.Text);
idftp1.list(listbox2.items,'',false);
end;

procedure TForm1.Button7Click(Sender: TObject);
begin

IdFTP1.ChangeDir('..');
idftp1.list(listbox2.items,'',false);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.text := 'ftp.*********.**.funpic.de';
edit2.text := '*********';
edit3.text := '*********';
end;

end.
Hoffe ihr könnt mir helfen

MFG Combi
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: [Indy/FTP]Problem mit Datei runterladen

  Alt 20. Apr 2006, 19:05
Herzlich willkommen in der Delphi-PRAXiS, Combi.

Fein, dass du etwas Code zu deinem Problem zeigst, aber schade, dass du Namen wie Button1 anstelle ConnectButton als Namen für deine UI-Komponenten verwendest. Da muss man deinen Code sehr lange studieren, bevor man einen Überblick hat.

Deine Funktion IsFile() ist eigentlich nicht besonders hilfreich, denn sie macht genau dasselbe wie FileExists(). Und im event handler ListBox2DblClick() hilft sie dir schon garnicht. Dort prüfst du, ob eine Datei auf deinem Client existiert, wo du doch eigentlich nur unterscheiden willst, ob der angeklickte Namen ein Verzeichnis oder eine Datei ist. Existieren sollte er schon, sonst hätte das FTP LIST command ihn dir nicht zurückgeliefert. Die Unterscheidung fällt dir leichter, wenn du das Listing mit Details anforderst. Dann hat jedes Item einen ItemType, der dir sagt, ob es sich um eine Datei handelt.

Herunterladen kannst du die Datei schließlich mit IdFTP.Get(). Das funktioniert ähnlich wie Put(), was du ja schon erfolgreich einsetzt.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
NeMesis44

Registriert seit: 18. Apr 2006
Ort: Berlin
10 Beiträge
 
#3

Re: [Indy/FTP]Problem mit Datei runterladen

  Alt 20. Apr 2006, 19:12
Danke für deine schnelle Antwort. fühl mich schon richtig wohl hier

Ich bin zu faul die Buttons usw zu benennen

Ja das Problem ist der will dann auch die Ordner runterladen

MFG Combi
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: [Indy/FTP]Problem mit Datei runterladen

  Alt 20. Apr 2006, 19:31
Warum dein Code auch die Ordner runterladen will, das kann ich so nicht sehen - aber ich kann dir etwas Code zeigen, der das LIST command mit Details verwendet: klick

marabu
  Mit Zitat antworten Zitat
NeMesis44

Registriert seit: 18. Apr 2006
Ort: Berlin
10 Beiträge
 
#5

Re: [Indy/FTP]Problem mit Datei runterladen

  Alt 20. Apr 2006, 22:18
Kenn ich schon hilft mir aber nix hab aber schon wieder ne andere Frage

Wie kann mann nur Ordner anzeigen und wie kann mann nur Datein anzeigen da wäre mein Problem teoretisch auch schon gelöst

MFG Combi
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: [Indy/FTP]Problem mit Datei runterladen

  Alt 21. Apr 2006, 03:36
Ich bin zwar nicht der Typ der auf die hinweißt -> Eine Frage, einen Thread. ...

Wie auch immer.
Zum Auflisten der Directory gibt es so schöne Methoden wie Delphi-Referenz durchsuchenIdFTP.List und Delphi-Referenz durchsuchenIdFTP.DirectoryListing.
Eigendlich sollte IdFTP.DirectoryListing alles Nötige liefern um zwischen Files, Directories und Links unterscheiden zu können.
Allerdings bringen unterschiedliche FTP-Server bei dem FTP-Commando 'LIST' durchaus unterschiedliche Listen zurück.
Es gibt z.B. FTP-Server die auf IdFTP.DirectoryListing garnix zurück senden ( IdFTP.DirectoryListing.Count=0 !!).
Dann mußt du mit IdFTP.List die einzelnen Items (Strings) auseinander nehmen.

Meine Erfahrung. Wer's besser weiß soll mich berichtigen.

Grüße
gmc
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:37 Uhr.
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