IdFtp wird nicht gefunden

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Vielleichtmann
Beiträge: 20
Registriert: So 13. Jan 2013, 16:53

IdFtp wird nicht gefunden

Beitrag von Vielleichtmann »

Hallo,
ich wollte mir eben ein Programm erstellen, mit dem ich Zugriff auf mein FTP-Konto habe. Dazu habe ich folgenden Code

Code: Alles auswählen

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdFtp, StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { private declarations }
    ftp: TidFtp;
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  memo1.lines.add(edit1.text);
  memo1.lines.add('</p>');
  memo1.lines.add('</body>');
  memo1.lines.add('</html>');
  memo1.SetFocus;
  memo1.SelectAll;
  memo1.lines.savetofile('C:\Log\Logname.txt');
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
ftp:=TidFtp.Create;
ftp.Host := 'ftp-web.funpic.de';
ftp.Username := 'Benutzername;
ftp.Password := 'Passwort';
ftp.Passive := true;
ftp.Connect;
ftp.Put('C:\Log\Logname.txt', 'C:\Log\Logname.txt', false);
ftp.Disconnect;
ftp.Quit;
end;
end.
Das Ganze soll quasi die Datei "Logname.txt" erstellen und hochladen. Lazarus gibt aber die Fehlermeldung "unit1.pas(0,0) Fatal: Can not find unit IdFtp used by Unit1." aus und ich weiß nicht, wie ich das lösen kann. Eine Neuinstallation hat nichts gebracht und im Code finde ich eigentlich auch keine Fehler. Vielleicht weiß ja jemand, wie ich das lösen kann.
Danke schonmal :-)
Zuletzt geändert von Lori am So 13. Jan 2013, 17:14, insgesamt 1-mal geändert.
Grund: richtiger Highlighter
Windows 7, Lazarus v. 1.0.6 :-)

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: IdFtp wird nicht gefunden

Beitrag von Heinrich Wolf »

Vielleichtmann hat geschrieben:

Code: Alles auswählen

...
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdFtp, StdCtrls;
 
  // Außer IdFTP werden noch mehr Indy Units benötigt. Am besten Du trägst den Indy Pfad in den Projektoptionen als Suchpfad mit ein.
 
...
ftp.Connect;
ftp.Put('C:\Log\Logname.txt', 'C:\Log\Logname.txt', false);
// Der Dateiname auf dem ftp Server sollte keinen Pfad enthalten. Außerdem ist es unwahrscheinlich, dass dort ein Windows Pfad gilt. Stattdessen solltest Du den Pfad auf dem ftp Server mit chdir o.ä. wählen.
ftp.Disconnect;
ftp.Quit;
end;
end.
 

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Re: IdFtp wird nicht gefunden

Beitrag von theo »

Wie kommst du auf die Idee, Indy sei bei Lazarus mit dabei?

Indy gibt es zwar für Lazarus: http://wiki.freepascal.org/Indy_with_Lazarus/de ,ich würde aber aktiv davon abraten, und Synapse empfehlen: http://synapse.ararat.cz/doku.php

Es gibt noch Lnet, damit habe ich persönlich aber keine Erfahrungen. http://wiki.freepascal.org/lNet

Vielleichtmann
Beiträge: 20
Registriert: So 13. Jan 2013, 16:53

Re: IdFtp wird nicht gefunden

Beitrag von Vielleichtmann »

Heinrich Wolf hat geschrieben:
Vielleichtmann hat geschrieben: Der Dateiname auf dem ftp Server sollte keinen Pfad enthalten. Außerdem ist es unwahrscheinlich, dass dort ein Windows Pfad gilt. Stattdessen solltest Du den Pfad auf dem ftp Server mit chdir o.ä. wählen.
Ich gehe mal davon aus, dass der erste Pfad der auf meinem Computer ist und der zweite der auf dem FTP-Server, oder? Dann verstehe ich auch, warum da überhaupt zwei Pfade angegeben sind.
theo hat geschrieben: und Synapse empfehlen: http://synapse.ararat.cz/doku.php
Danke, und wo genau muss ich den Ordner speichern, den ich da runtergeladen habe?
Windows 7, Lazarus v. 1.0.6 :-)

Vielleichtmann
Beiträge: 20
Registriert: So 13. Jan 2013, 16:53

Re: IdFtp wird nicht gefunden

Beitrag von Vielleichtmann »

OK, kann geschlossen werden. Der vollständige Code zumindest zum Uploaden einer Datei ist:

Code: Alles auswählen

 uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ftpsend;  
procedure TForm1.Button1Click(Sender: TObject);
begin
  FtpPutFile('ftp-web.funpic.de', '21', '/test.txt', 'test.txt', 'ftp*****', 'Passwort');
end; 
 
:-)
Zuletzt geändert von Lori am Mo 14. Jan 2013, 15:16, insgesamt 1-mal geändert.
Grund: Bitte den richtigen Highlighter verwenden.
Windows 7, Lazarus v. 1.0.6 :-)

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: IdFtp wird nicht gefunden

Beitrag von Heinrich Wolf »

Indy hat den Nachteil, dass Virenscanner die Compilate als false-positive einstufen. Vorteil ist, dass Indy auch auf Delphi läuft. Die Installation des *.lpk auf Lazarus ist mir nicht gelungen. Dennoch kann ich Indy Units in Lazarus verwenden.

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Re: IdFtp wird nicht gefunden

Beitrag von theo »

Heinrich Wolf hat geschrieben:Vorteil ist, dass Indy auch auf Delphi läuft.
Synapse läuft auch auf Delphi, Indy läuft überall nicht richtig. :wink:

Antworten