Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi (INDY/FTP) Wie lade ich eine datei per "doppelklick" runter? (https://www.delphipraxis.net/55700-indy-ftp-wie-lade-ich-eine-datei-per-doppelklick-runter.html)

nikluetke 25. Okt 2005 16:50


(INDY/FTP) Wie lade ich eine datei per "doppelklick&quo
 
Ich habe die verbindung aufgebaut und jetzt habe ich dateien und der listbox.
Also ich stelle mir das so vor: Wenn man auf die datei klickt, öffnet sich der opendialog und fragt einen ab, wo man die datei auf dem rechner speichern will.

wie geht das? bitte um hilfe

lg NiKluetke

Die Muhkuh 25. Okt 2005 17:10

Re: (INDY/FTP) Wie lade ich eine datei per "doppelklick
 
Hi,

Code

Delphi-Quellcode:
if Listbox1.ItemIndex <> - 1 then
begin
  if SaveDialog1.Execute then
  begin
    IDFTP1.Get(ListBox1.Items[Listbox1.ItemIndex], SaveDialog1.Filename);
  end;
end;
Ob es diese Get-Methode gibt, weiß ich gerade nicht, aber es gibt etwas ähnliches. Einfach mal gucken ;)

MfG,

Manu :thumb:

nikluetke 26. Okt 2005 18:58

Re: (INDY/FTP) Wie lade ich eine datei per "doppelklick
 
erstmal ein großes dankeschön für die antwort.
nun habe ich noch folgende frage:
wie kann man prüfen ob das markirte eine datei oder ein ordner ist?

lg NiKluetke

Die Muhkuh 26. Okt 2005 18:59

Re: (INDY/FTP) Wie lade ich eine datei per "doppelklick
 
Hmm,

ich würde ganz spontan sagen:
Delphi-Quellcode:
if FileExists(<Filename>) then
begin
  isFile := true;
end
else
begin
  isFile := false;
end;

SirThornberry 26. Okt 2005 20:28

Re: (INDY/FTP) Wie lade ich eine datei per "doppelklick
 
ob ein Eintrag in deiner Liste einen Ordner oder eine Datei darstellt bekommst du doch mit dem "List" Kommando, dort einfach die Details mit abrufen.

nikluetke 27. Okt 2005 14:40

Re: (INDY/FTP) Wie lade ich eine datei per "doppelklick
 
großes dankeschön.
@SirThornberry: Ich weiss nicht, was du damit meinst :gruebel: :wall:

lg NiK

nikluetke 27. Okt 2005 14:46

Re: (INDY/FTP) Wie lade ich eine datei per "doppelklick
 
Zitat:

Zitat von Spider
Hmm,

ich würde ganz spontan sagen:
Delphi-Quellcode:
if FileExists(<Filename>) then
begin
  isFile := true;
end
else
begin
  isFile := false;
end;

[Fehler] Unit1.pas(85): Undefinierter Bezeichner: 'isFile'

was jetzt?

Neutral General 27. Okt 2005 14:49

Re: (INDY/FTP) Wie lade ich eine datei per "doppelklick
 
Delphi-Quellcode:
function IsFile(Filename : String) : Boolean;
begin
 if FileExists(Filename) then
  begin
   isFile := true;
  end
 else
 begin
  isFile := false;
 end;
end;
so -.-
das musst du halt entweder als Function schreiben oder IsFile als globale Boolean Variable deklarieren ;)

nikluetke 27. Okt 2005 14:56

Re: (INDY/FTP) Wie lade ich eine datei per "doppelklick
 
irgendwie bin ich blöd :wall:

bei mir kommt dann fehler:
[Fehler] Unit1.pas(46): Nicht genügend wirkliche Parameter (bei if FileExists Filename then )

ich ferstehe das nicht :(

lg NiKluetke

Neutral General 27. Okt 2005 14:58

Re: (INDY/FTP) Wie lade ich eine datei per "doppelklick
 
sry hatte mich verschrieben. Jetzt ists richtig -.-
Aber wie mir scheint fehlen dir noch einige Grundlagen.. Also das z.B FileExists eine Function ist die Parameter erwartet dadrauf hättest du alleine kommen sollen und das Filename in dem Fall der Parameter sein muss... ;)

nikluetke 27. Okt 2005 15:09

Re: (INDY/FTP) Wie lade ich eine datei per "doppelklick
 
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    connect: TButton;
    IdFTP1: TIdFTP;
    Edit1: TEdit;
    desconnect: TButton;
    wobinich: TButton;
    Edit2: TEdit;
    dirchange: TButton;
    back: TButton;
    XPManifest1: TXPManifest;
    IdAntiFreeze1: TIdAntiFreeze;
    LabeledEdit1: TLabeledEdit;
    LabeledEdit2: TLabeledEdit;
    LabeledEdit3: TLabeledEdit;
    ListBox1: TListBox;
    procedure connectClick(Sender: TObject);
    procedure desconnectClick(Sender: TObject);
    procedure wobinichClick(Sender: TObject);
    procedure dirchangeClick(Sender: TObject);
    procedure backClick(Sender: TObject);
    procedure ListBox1DblClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation
function IsFile(Filename : String) : Boolean;
var
  IsFile: Boolean;
begin
  if FileExists(<Filename>) then
  begin
    isFile := true;
  end
  else
  begin
    isFile := false;
  end;
end;

{$R *.dfm}

procedure TForm1.connectClick(Sender: TObject);
begin
IdFTP1.username := LabeledEdit2.Text;
IdFTP1.Password := LabeledEdit3.Text;
IdFTP1.Host := LabeledEdit1.Text;
IdFTP1.Connect;
if idFTP1.Connected then
Edit1.Text:='Verbunden';
idftp1.list(listbox1.items,'',false);
end;

procedure TForm1.desconnectClick(Sender: TObject);
begin
IdFTP1.Disconnect;
edit1.Text := 'Getrennt';
end;

procedure TForm1.wobinichClick(Sender: TObject);
begin
idftp1.list(listbox1.items,'',false);//IdFTP1.List(Memo1.Lines);
end;


procedure TForm1.dirchangeClick(Sender: TObject);
begin
IdFTP1.ChangeDir(Edit2.Text);
idftp1.list(listbox1.items,'',false);
end;

procedure TForm1.backClick(Sender: TObject);
begin
IdFTP1.ChangeDir('..');
idftp1.list(listbox1.items,'',false);
end;


procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
if Listbox1.ItemIndex <> - 1 then
begin
if isFile := True then
begin
  IDFTP1.ChangeDir(Listbox1.Items[Listbox1.ItemIndex]);
  idftp1.list(listbox1.items,'',false);
end;
end;

end.

end.
so, das ist der code. ich weiss, ich bin noch neuling in delphi, deswegen will ich ja ein bisschen üben :roll:

wie muss man das jetzt machen, das das klappt? ichw eiss, ich bin ein schwerer fall

lg NiKluetke

Neutral General 27. Okt 2005 15:11

Re: (INDY/FTP) Wie lade ich eine datei per "doppelklick
 
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    connect: TButton;
    IdFTP1: TIdFTP;
    Edit1: TEdit;
    desconnect: TButton;
    wobinich: TButton;
    Edit2: TEdit;
    dirchange: TButton;
    back: TButton;
    XPManifest1: TXPManifest;
    IdAntiFreeze1: TIdAntiFreeze;
    LabeledEdit1: TLabeledEdit;
    LabeledEdit2: TLabeledEdit;
    LabeledEdit3: TLabeledEdit;
    ListBox1: TListBox;
    procedure connectClick(Sender: TObject);
    procedure desconnectClick(Sender: TObject);
    procedure wobinichClick(Sender: TObject);
    procedure dirchangeClick(Sender: TObject);
    procedure backClick(Sender: TObject);
    procedure ListBox1DblClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Functionen nach Impkementation schreiben...
function IsFile(Filename : String) : Boolean;
var
  IsFile: Boolean;
begin
  if FileExists(<Filename>) then
  begin
    isFile := true;
  end
  else
  begin
    isFile := false;
  end;
end;

procedure TForm1.connectClick(Sender: TObject);
begin
IdFTP1.username := LabeledEdit2.Text;
IdFTP1.Password := LabeledEdit3.Text;
IdFTP1.Host := LabeledEdit1.Text;
IdFTP1.Connect;
if idFTP1.Connected then
Edit1.Text:='Verbunden';
idftp1.list(listbox1.items,'',false);
end;

procedure TForm1.desconnectClick(Sender: TObject);
begin
IdFTP1.Disconnect;
edit1.Text := 'Getrennt';
end;

procedure TForm1.wobinichClick(Sender: TObject);
begin
idftp1.list(listbox1.items,'',false);//IdFTP1.List(Memo1.Lines);
end;


procedure TForm1.dirchangeClick(Sender: TObject);
begin
IdFTP1.ChangeDir(Edit2.Text);
idftp1.list(listbox1.items,'',false);
end;

procedure TForm1.backClick(Sender: TObject);
begin
IdFTP1.ChangeDir('..');
idftp1.list(listbox1.items,'',false);
end;


procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
if Listbox1.ItemIndex <> - 1 then
begin
if isFile(Listbox1.Items[Listbox1.ItemIndex]) then // Parameter vergessen
begin
  IDFTP1.ChangeDir(Listbox1.Items[Listbox1.ItemIndex]);
  idftp1.list(listbox1.items,'',false);
end;
end;

end.

end.
so sollte es gehen wenn ich mich nicht irre.

Die Muhkuh 27. Okt 2005 15:13

Re: (INDY/FTP) Wie lade ich eine datei per "doppelklick
 
Hi,

erstmal musst du bei deiner Funktion "IsFile" diese zwei < und > entfernen ;) Diese waren nur dafür gedacht, dass du später dort deinen Dateinamen reinsetzten sollst.

Und die Procedure "Listbox1DblClick" müsste so heißen:

Delphi-Quellcode:
procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
if Listbox1.ItemIndex <> - 1 then
  begin
   if IsFile(ListBox1.Items[ListBox1.ItemIndex]) then // Hier ist es eine Datei
    begin
      // Hier kommt dein Code zum eine Datei runterzuladen
    end
    else
    begin
      IDFTP1.ChangeDir(Listbox1.Items[Listbox1.ItemIndex]); // Verzeichnis wechseln
      idftp1.list(listbox1.items,'',false);
    end;
  end;
end;
@Michael,

dein Code ist falsch. Da sind noch zwei < und > drinne ;)

nikluetke 27. Okt 2005 15:14

Re: (INDY/FTP) Wie lade ich eine datei per "doppelklick
 
cool, danke. so, jetzt die (hoffentlich letzte frage)
bei
Delphi-Quellcode:
 if FileExists(<Filename>) then
habe ich noch einen fehler undzwar:
Delphi-Quellcode:
[Fehler] Unit1.pas(51): Ausdruck erwartet, aber '<' gefunden
SUPERGROßES DANKE!!!!!!

LG NiKluetke

/edit DANKE, habs gesehen!!!!!
lG Nikluetke

Neutral General 27. Okt 2005 15:15

Re: (INDY/FTP) Wie lade ich eine datei per "doppelklick
 
jaja war nur auf die schnelle nachgeguckt :D
grrr.. egal :mrgreen:

Die Muhkuh 27. Okt 2005 15:16

Re: (INDY/FTP) Wie lade ich eine datei per "doppelklick
 
Hi,

ich hab doch geschrieben, dass du die < und > dort entfernen musst ;) . Also:

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

Manu :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:06 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