Delphi-PRAXiS

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

Kovu17 27. Sep 2006 09:57


FTP Client
 
Hi,

bin neu in der Delphi-Szene, komme aus dem CS und VB.Net Bereich.

Nun will ich einen FTP Clienten in Delphi programmieren, gibt es dazu Source Code oder Tut´s ?

mkinzler 27. Sep 2006 09:59

Re: FTP Client
 
Ja, z.B. in INDY oder Synapse. Dafür gibt es auch unzählige Beispiele.
Welches Delphi hast du?

Kovu17 27. Sep 2006 10:06

Re: FTP Client
 
http://www.delphipraxis.net/internal...ct.php?t=93272

Ich glaube das klärt die Fragen die du vllt hast.

Danke für deine HIlfe

Andidreas 27. Sep 2006 10:44

Re: FTP Client
 
aloha...

es gibt eine komponente in delphi die nent sich TIdFTP die findest du unter Indy Clients...

wenn du diese komponente auf deiner form hast, kannst du im QT die normalen ftp befehele absetzen

also z.b. get, put etc...

mkinzler 27. Sep 2006 10:46

Re: FTP Client
 
Im Bereich "INDY Clients" gibt es die Komponente TIdFTP.
http://www.dsdt.info/tutorials/indy/?page=4

Kovu17 27. Sep 2006 10:50

Re: FTP Client
 
Also... vieleicht kann mir ja noch jemand bei der Umsetzung helfen...

Es gibt auf unserer Schule ein Schüler FTP Konto für jeden Schüler.
Nun wenn der Schüler sih am FTP anmeldet, gibt es erstmal 3 Server zur Auswahl. Auf diesen 3 Servern liegen mehrere Hundert Verzeicnhnisse worauf der Schüler nur auf eins zugrif hat.

Nun soll es so sein, dass der Schüler nach dem Login, nur noch seine Daten sieht, keine Server, keine Verzeichnisse.

Dies soll entweder so sein, dass das Programm einen eigenen TreeView hat woraus man runterladen kann, oder ganz einfach, das Programm den Iexplorer PFad und User und PW übergibt.

Wie setll ich das am sinnigsten an?

mkinzler 27. Sep 2006 10:53

Re: FTP Client
 
Die Anzeige im Programm würde ich vorziehen, da hier der Schüler nicht sieht auf welchem Server und Verzeichnis er eigentlich zugreift, aber bedeutet natürlich Mehraufwand.

Kovu17 27. Sep 2006 10:53

Re: FTP Client
 
Aber da es nur ein Leserecht gibt, hält es sich ja in Grenzen oder?!

€dit: Ganz nebenbei, breuchte mal bitte Referenz für das Verschlüsseln von PWs die fest gespeichwert werden soll, bitte so das mans auch weieder entschlüssen kann. Und eine Referenz wie man in Delphi am besten Informationn speichert.

Viele dank!

mkinzler 27. Sep 2006 11:02

Re: FTP Client
 
Zitat:

Aber da es nur ein Leserecht gibt, hält es sich ja in Grenzen oder?!
Ja, aber zu was brauchst du dann das Programm? Du könntest auch den IE mittels TWebBrowser in dein Programm einlagern, so würde man den Pfad, und vorallem die User/Pass-Kombination nicht sehen.
Zitat:

anz nebenbei, breuchte mal bitte Referenz für das Verschlüsseln von PWs die fest gespeichwert werden soll, bitte so das mans auch weieder entschlüssen kann. Und eine Referenz wie man in Delphi am besten Informationn speichert.
Da unterscheidet sich Delphi nicht von anderen Sprachen
Verschlüsselung: ( 3DES, Rindjael/AES, ...)
Speicherung: INI, Registry, Datei, Datenbank, ...

Kovu17 27. Sep 2006 11:04

Re: FTP Client
 
Also wie ist das mit dem WebExplorer könntest du das bitte genauer Erläutern wie du das meinst?
Kann ich dem TWebExp. Die Infos übergeben???

mkinzler 27. Sep 2006 11:07

Re: FTP Client
 
TWebBrowser ist eine Wrapper-Komponente um das ActiveX-Control des IE; gibt es auch als TMozillaBrowser für die GRE. Dieses besitzt die Methoden .Navigate/.Navigate2

Elvis 27. Sep 2006 11:11

Re: FTP Client
 
Zitat:

Zitat von Kovu17
€dit: Ganz nebenbei, breuchte mal bitte Referenz für das Verschlüsseln von PWs die fest gespeichwert werden soll, bitte so das mans auch weieder entschlüssen kann. Und eine Referenz wie man in Delphi am besten Informationn speichert.

Zum Verschlüsseln: Suche mal hier im Forum nach dem Hier im Forum suchenDEC, oder einfach nach den Beiträgen von negaH. ;)
Zum Speichern gibt es alles Mögliche.
  • Du kannst mit Hier im Forum suchenOmniXML einen XML Parser nehmen, der keine externen Abhängigkeiten braucht. (Das schien dir wichtig zu sein)
  • Du kannst die Hier im Forum suchendpCollection nehmen um strukturierte Daten direkt schreiben/lesen zu können.
  • Du kannst Hier im Forum suchenTIniFile nehmen, aber INIs sind IMHO megafriemeleig und heutzutage nur für wenige Mini-Settings sinnvoll.
    Ich glaube sie werden überhaupt nur noch aus einem gewissen Hang zur Nostalgie benutzt. :mrgreen:
Aber für mehr Infos mache bitte für jede Frage einen eigenen Thread auf. So geht es nicht drunter und drüber und man kann später besser danach suchen. ;)

panzerfischer 27. Sep 2006 11:21

Re: FTP Client
 
wäre es nicht einfacher, den bestehenden ftp server so zu konfigurieren, das jeder schüler seinen eigenen account hat, indem nur der betreffende ordner freigegeben ist, ich meine mal, das ist nen haufen arbeit, aber die kann man ja skripte übernehmen lassen, das muss man ja nur einmal machen. bei Gene6 FTP Server müsste man nur ne ne ini datei für jeden user schreiben, wo ein passwort (verschlüsselt) drinne steht, und der pfad, auf den der nutzer zugang hat, ich denke mal das lässt sich leicht automatisieren, ist auf jeden fall viel einfacher als sich nen ftp server selbst zu schreiben, der im endeffekt nichts anderes macht

ich will dich zwar nicht vom programmieren abhalten, aber ich denke mal, man muss das rad ja nicht 2 mal erfinden

Kovu17 27. Sep 2006 11:23

Re: FTP Client
 
Verstehe schon, bin dir auch nicht böse oder so...

Aber das ist nun mal mein Auftrag, und diesen soll ich so erfüllen :)

Und mal ehrlich, würdest du zu einem Kunden sagen, der dich beauftragt "Ne das brauchen sie nicht, das geht auch so?"

panzerfischer 27. Sep 2006 11:32

Re: FTP Client
 
naja ich bin eigendlich davon ausgegangen, das es sich bei dir um entwerder einen lehrer oder auch einen schüler handelt der von der schulverwaltung nen auftrag gekriegt hat,
wenn ich da an unseren info lehrer denke, der wäre mit so einer aufgabe hilflos aufgeschmissen, und hätte sie zu meiner schulzeit warscheinlich an mich weitergegeben.

meine weiteren gedankengänge waren, das es der schulleitung föllig egal wäre, wie du das problem löst (ob mit viel arbeit oder wenig) und ich meine mal, es ist deine freizeit. ich hänge seit 6 wochen an nem ftp client)

wenn ich das richtig aufgefasst habe, sollen dann die Schüler mit deinem neuen prog. nur noch auf ihren ordner zugreifen können (bei bestehendem verwaltungssystem)

was aber wenn sich die schüler nicht daran halten, und weiter wie gewohnt mit nem normalen ftp prog. auf die seite einlogen und immer noch die daten von allen anderen sehen, denke mal das ist nicht sinn und zweck der sache, also irgendwas musst du an dem server verändern, und warum nicht mit einfachen mitteln?

Zitat:

Und mal ehrlich, würdest du zu einem Kunden sagen, der dich beauftragt "Ne das brauchen sie nicht, das geht auch so?"
also ich würde mir die sache nicht komplizierter machen als notwendig, ich meine mal den ftpserver neu zu konfigurieren dauert auch seine zeit, wäre aber die einfachste variante, und wenn du nach stunden bezahlt wirst, dann wäre es der schulleitung sicherlich auch lieber, wenn du nicht so viel zeit brauchst

Kovu17 27. Sep 2006 11:37

Re: FTP Client
 
Also... wir sind ne IT Schule leider auch mit HöHa Lehrgängen und sowas...

Jeder hat die Möglichkeit von Zuhause seine Daten auf seinem SchulOrdner runter zu laden, kommt aber aufgrund der EBrechtigungen auch nur in seinen Ordner rein.

Nun ist das Problem, vor allem für die Mädels der HöHa, dass die sich nicht so damit auskennen und frioh sind wenn sie den PC anbekommenö. Und genau da soll mein Programm eingesetzt werden. Einfach eine Exe zum Download, in der ma nur User und PW eingibt und automtaisch auf sein Laufwerk kommt (die Zuordnung ist durch den Loginnamen, da Logon == Verzeichnisname möglich).

Mehr nicht?!?!?!

Es würde also entweder alles über einen neuen FTP Clienten gemacht werden, oder einfach nur das Login und die Zuordnung und dann an den IE weitergegeben werden.

panzerfischer 27. Sep 2006 11:49

Re: FTP Client
 
na sag das doch gleich, das ist wirklich nicht so schwer
also nimm ne tidftpclient componente, mach am anfang ne dialogabfrage nach den userdaten, verbinde dich zu dem server (server einstellungen kannst du fest einstellen, denke mal nicht, das sich der domönen name ständig ändert))
und lass das zeug in nem treelistview anzeigen

Delphi-Quellcode:
IDFtpClien1.username:='USERNAME';
IDFtpClien1.Password:='pwd';
IDFtpClien1.Port:=21; //standart;
IDFtpClien1.host:='domänen name' //ohne ftp://
try
  IDFtpClien1.Connect;
except
  label1.caption:='Fehler';
end;

IDFtpClien1.List;
...
den rest findeste zu hauf hier im forum

gibt dann noch so befehle wie IDFtpClien1.get(dateiname,lokalerpfad)
und viel mehr brauchst du ja nicht

wenn ich dir nen tipp geben darf, hol dir das gleiche server programm und lass es auf deinem rechner laufen, so siehst du in der log datei, wenn dein prog. mal wieder irgend welchen quatsch macht, das ist beim entwickeln sehr hilfreich, denn nicht jeder ftp server ist gleich, und liefert die gleichen antorten auf die selben befehle

Kovu17 27. Sep 2006 12:29

Re: FTP Client
 
Ich glaub ich bin irgednwei dumm.... ich find die KOmponente nicht,. muss ich was besonderes einfügen?

Finde keine Komponente mit dem Namen TIdFtpClient. Benutze TurboDelphi...

--------------
EDIT: Hat sich erledigt, hab vergessen was einzubinden.
--------------
EDIT2: Öhm... nette Syntax bei Delphi xD Was bedeutet := ?
EDIT3:

Habe ein Problem bei einer Textbox. Habe es erst unverschlüsselt (Kein PWChar) und mit Text belegt, nun will ich, dass wenn ein Buchstabe eingegeben wird, alles Text gelöscht wird, der PWChar eingestellt wird und der Buchstabe erscheint.

Nun kann ich den Buchstaben nicht abfangen.

Wie mach ich das?

Habe jetzt in der Changed den PWChar eingefügt und das Textbox geleert, Problem ist, das der erste Eingegebene Buchstabe weg ist, was ja auch nicht sein soll.

EDIT4: Wie kann ich einen Fehler abfangen so das ich anzeige welcher es ist?

Kovu17 27. Sep 2006 12:47

Re: FTP Client
 
Hier mal mein Quellcode:

Delphi-Quellcode:
unit Main;

interface

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

type
  TfrmMain = class(TForm)
    lblUsername: TLabel;
    lblPasswort: TLabel;
    txtPasswort: TEdit;
    txtUsername: TEdit;
    chbUserSpeichern: TCheckBox;
    btnStart: TButton;
    btnCancel: TButton;
    lblError: TLabel;
    ftp: TIdFtp;
    procedure btnCancelClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure txtUsernameChange(Sender: TObject);
    procedure txtPasswortChange(Sender: TObject);
    procedure btnStartClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}

procedure TfrmMain.btnCancelClick(Sender: TObject);
begin
  frmMain.Close();
end;

procedure TfrmMain.btnStartClick(Sender: TObject);
begin
  try
  ftp.Username := txtUsername.Text;
  ftp.Password := txtPasswort.Text;
  ftp.Port := 21;
  ftp.Host := 'ajc-bk.dyndns.org';
  ftp.Connect();
  except
    //lblError.Text = '';
  end;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  txtUsername.Font.Style := [fsItalic];
  txtPasswort.Font.Style := [fsItalic];
  frmMain.chbUserSpeichern.Checked := true;
end;

procedure TfrmMain.txtPasswortChange(Sender: TObject);
begin
  txtPasswort.Font.Style := [];
  txtPasswort.PasswordChar := '*';
end;

procedure TfrmMain.txtUsernameChange(Sender: TObject);
begin
   txtUsername.Font.Style := [];
end;

end.
Bei der ftp.Username = .... tritt schon ein Fehler auf, warum? Bitte um HIlfe

mkinzler 27. Sep 2006 13:12

Re: FTP Client
 
Was für einen Fehler bekommst du?

panzerfischer 27. Sep 2006 14:30

Re: FTP Client
 
vielleicht 'txtPasswort.PasswordChar := '*'; ' in der procedure TfrmMain.FormCreate ausführen, bzw bei den atributen des edit's bearbeiten, jedoch nicht in der "on change" procedure ausführen

die beiden letzten proceduren, lass die einfach mal weg, die erfüllen keinen sinn (in meinen augen)

Kovu17 27. Sep 2006 17:51

Re: FTP Client
 
Hi, sorry war eben nicht am PC...

die Methoden erfüllen Ihren Zweck, da dort Standartmäßig ein kursiver sichtbarer Hilfetext drinsteht, "Geben Sie *** ein" und wenn der Text überschrieben wird, mit einem Zeichen, soll es ja nicht mehr kursiv sein und das PW nicht mehr sichtbar.


Der Fehler in der Zeile

ftp.Username := txtUsername.Text;

Was für einer kann i9ch nicht sagen da ich nciht weiß wie ich dauf zu greife....

Hab ja kein Exception Objekt wie in C#

Elvis 27. Sep 2006 17:56

Re: FTP Client
 
Zitat:

Zitat von Kovu17
Hab ja kein Exception Objekt wie in C#

Doch hast du, und wenn es knallt sollte er dir auch sagen was knallt. Und genau das wäre interessant. Es ist nicht zufällig eine AV bei 0? ;)

Kovu17 27. Sep 2006 17:59

Re: FTP Client
 
Sorry bin neu in Delphi oben hab ich ja den QC, wie sprech ich den das Objekt an?
Was ist eine AV?

Kovu17 27. Sep 2006 18:11

Re: FTP Client
 
Sry für Doppelpost...

Ok, habs jetzt nachgeschlagen wie ich Exception Objekte erstelle... ziemlich "anders" als bei C# und VB finde ich... egal...

hier die Fehlermeldung:

Zugriffsverletzung bei Adresse 004047F0 in Modul 'ftp.exe'. Schreiben von Adresse 000000DC.

Das passiert in der einen Zeile da, in der er rausspringt.

panzerfischer 27. Sep 2006 19:24

Re: FTP Client
 
haste mal versucht dein prog im stepover modus auszuführen, weil die stelle die er dir anzeigt muss nicht immer die sein, wo der fehler entstanden ist, setz einfach mal nen breakpoint davor, und lass dein programm nach dem anhalten mit F7 weiterlaufen, ansonsten kann ich nähmlich im scource nichts auffälliges entdecken, schon gar nicht an der stelle

hsbc 27. Sep 2006 19:29

Re: FTP Client
 
Hallo,

gib mal die beiden Klammern () in Zeile 51 nach dem Connect weg ...

bzw. besteht zu diesem Zeitpunkt überhaupt eine Verbindung zum Internet ?

mfg
Herbert

Elvis 27. Sep 2006 19:48

Re: FTP Client
 
Öhm, hast du den FtpClient auf den Form gezogen oder zwischendurch ftp.Free ausgeführt?
Für mich sieht das aus als wäre ftp schon zerstört wenn du darauf zugreifst...

@hsbc, das mit den Klammern ist schon richtig so. Ist einfach hübscher :)

Kovu17 27. Sep 2006 20:21

Re: FTP Client
 
Hi,

inzwischen weiß ich das es an TurboDelfi gelegen hat, das keine fremden Komponenten zulässt.

Nun hab ich Borland Dephi6 und er sagt mir das er die Dateien im uses nicht findet....

BITTE HELFT MIR BIN ECHT AM ENDE MIT DEM ******

BITTE
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdFTP;

Kovu17 27. Sep 2006 20:31

Re: FTP Client
 
*push* BITTE

Elvis 27. Sep 2006 20:31

Re: FTP Client
 
Zitat:

Zitat von Kovu17
Hi,

inzwischen weiß ich das es an TurboDelfi gelegen hat, das keine fremden Komponenten zulässt.

Nun hab ich Borland Dephi6 und er sagt mir das er die Dateien im uses nicht findet....

Nun, du musst ftp nicht als Komponente auf dem Form haben. ;)
Es hätte gereicht ihn beim Erzeugen der Form mitanzulegen. Design time bringt dir bei dieser Komponente sowieso nicht viel. ;)
Am einfachsten geht das in Delphi wenn man AfterConstruction überschreibt. Dann wird es nach jedem Constructor ausgeführt. :)
Delphi-Quellcode:
type
  TfrmMain = class(TForm)
...snip
    procedure AfterConstruction; override;

...snip

procedure TfrmMain.AfterConstruction;
begin
  ftp := TIdFtp.Create(self);
  // da das Form als Owner übergeben wird musst
  // du dich nicht um das Freigeben von ftp kümmern das
  // wird dein Form autom. machen wenn es selbst freigegeben wird
end;
Ich würde dir trotzdem zu TurboDelphi raten. Die bormalen Controls/Komponenten sind für dich mehr als ausreichend. Die Indys auf ein Form zu ziehen bringt dir eigentlich nicht viel, da du sie sowieso nur im Code benutzt.

Falls du es dennoch in D6 machen willst:
Du müsstest 2 Packages von den Indys haben. Du findest sie im BDS4\Source\Win32\Indy9 Ordner.
Öffne zuerst indy.dpkw und kompiliere es. Jetzt öffnest du dclindy.dpkw und drückst auf "install".
Dadurch wird dieses Package ebenfalls kompiliert und danach alle Komponenten in die IDE installiert.


btw: Pushing wird hier erst nach 24h gern gesehen. Jeder hat es hier eilig Antworten zu kriegen und wer sich für dein Problem interessiert wird es schon allein bemerken...

Kovu17 27. Sep 2006 21:35

Re: FTP Client
 
Ok nach 6 Stunden und 5 Entwicklungsumgebungen gebe ich mich als geschlagen. Ich gebe auf. Ich schwöer euch ich habe gerade 3 Stgunde per IRC es ausprobiert und ich kann nicht mehr. Kein Arsch ist heutzutage bereit jemandem so zu helfen das er es versteht.

Danke für eure Hilfe...

Sollte doch noch ein Funken Hoffnung bestehen und jemand legt sich bereit mir intensiver zu helfen, wäre ich sehr dankbar und würde sogar Geld überweisen.

Elvis 27. Sep 2006 21:40

Re: FTP Client
 
Zitat:

Zitat von Kovu17
Sollte doch noch ein Funken Hoffnung bestehen und jemand legt sich bereit mir intensiver zu helfen, wäre ich sehr dankbar und würde sogar Geld überweisen.

Geld überweisen? nenene :mrgreen:
In der Foren übersicht findest du über der Shoutbox einen Link zum DP-Chat, probier den einfach mal aus. ;)

Kovu17 27. Sep 2006 21:42

Re: FTP Client
 
Ich schwäöre dir is tus, wenn du wüsstest was ich eben schon getan hab würdest du dich vor lachen nciht mehr einkriegen -.-*

Bin im Chat könntest du reinkommen?

DataCool 28. Sep 2006 14:27

Re: FTP Client
 
Hi,

hast Du die Indy-Komponenten nicht installiert ?!
Weiß gar nicht mehr ob die bei D6 standard mässig installiert sind.


Gruß Data

SirThornberry 28. Sep 2006 14:37

Re: FTP Client
 
Zitat:

Zitat von Kovu17
EDIT2: Öhm... nette Syntax bei Delphi xD Was bedeutet := ?

Bist du dir sicher das du es in Delphi programmieren willst? Wenn es an solchen Dingen schon scheitert ist ein Ftp-Client wohl kaum die richtige Wahl für ein erstes Delphiprojekt. Was würde dagegen sprechen das Projekt in einer dir bekannten Sprache zu entwickeln?

panzerfischer 29. Sep 2006 08:50

Re: FTP Client
 
vielleicht kannst du deinen bisherigen quellcode mal schicken, das könnte helfen deine fehler zu finden, wir wollen dir ja helfen, aber du musst schon selber was dafür tun


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