Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Lazarus - Synapse - Connect funzt nicht (https://www.delphipraxis.net/118774-lazarus-synapse-connect-funzt-nicht.html)

LuCSteR 14. Aug 2008 16:30


Lazarus - Synapse - Connect funzt nicht
 
Hey,

habe mich in Synapse eingearbeitet und komme an sich mit der ganzen Thematik ganz gut klar. Nur als ich heute auf mehreren wegen versucht habe eine connection herzustellen traten fehler auf.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  // Create TFTPClient
  TFTPClient := TTFTPSend.Create;
  Log.Lines.Add('TFTPClient created');

  // Set IP/Port/Username/Password
  TFTPClient.TargetHost := IPEdit.Text;
  Log.Lines.Add('TargetSystem is ' + TFTPClient.TargetHost);
  TFTPClient.TargetPort := PortEdit.Text;
  Log.Lines.Add('TargetPort is ' + TFTPClient.TargetPort);
  TFTPClient.UserName:= UserEdit.Text;
  Log.Lines.Add('UserName is ' + TFTPClient.UserName);
  TFTPClient.Password:= PassEdit.Text;
  Log.Lines.Add('Password is ' + TFTPClient.Password);

  // Try to get file
  Log.Lines.Add('Try to get "' + FilePathServerEdit.Text + '"');
  if TFTPClient.RecvFile(FilePathServerEdit.Text)
    then
      begin
        // Filetransfer successful
        Log.Lines.Add('File successfully get from TFTPServer');
        SaveDialog1.FileName := FilePathServerEdit.Text;
        if SaveDialog1.Execute
          then TFTPClient.Data.SaveToFile(SaveDialog1.FileName);
      end
    else
      begin
        // Filetransfer not successful
        Log.Lines.Add('Error while getting File from TFTPServer');
        Log.Lines.Add(IntToStr(TFTPClient.ErrorCode) + ' - ' + TFTPClient.ErrorString);
      end;

  // Free TFTPClient
  TFTPClient.Free;
  Log.Lines.Add('TFTPClient destroyed');
end;
so wie es aussieht funktioniert das connecten einfach nicht. wenn es funktionieren würde, dann würde ja der savedialog aufpoppen. passiert aber nicht.

Ich habe die Klasse TTFTPSend und die zugehörige Unit FTPTSend genutzt (Client und Server protokoll). Da ich nur Dateien suchen und dann kopieren möchte, wäre es vll. sinnvoller nur die Unit FTPSend einzubinden(Client Protkoll)?

grüße

shmia 14. Aug 2008 16:42

Re: Lazarus - Synapse - Connect funzt nicht
 
Zitat:

Zitat von LuCSteR
so wie es aussieht funktioniert das connecten einfach nicht.

Ich vermisse in dem Code die Zeile wo der Connect wirklich ausgeführt wird.
Du weisst die ganzen Daten zu (Host, Port, User, Passwort) und versuchst dann sofort eine Datei runterzuladen.
Da fehlt doch FTPClient.Connect oder FTPClient.Connected := True !
Die genaue Syntax musst du selber rausfinden, aber da fehlt definitiv eine Anweisung.

Delphi-Quellcode:
// Deine Variable fängt mit T an!
// nach dem Borland Coding Style ist das falsch
// Membervariablen müssen mit dem Prefix "F" beginnen
TFTPClient := TTFTPSend.Create;

LuCSteR 14. Aug 2008 16:50

Re: Lazarus - Synapse - Connect funzt nicht
 
mmh der Coding-Style von Borland ist ja erstmal kein großes Hindernis :)

Hier synapse Hilfe gibts alles was man wissen kann über synapse. ich habe mich schon umgeschaut, allerdings finde ich keinen connect-befehl. es gibt ein bsp-programm, wenn man die libary runterlädt. da gibts auch kein connect-befehl. mmh. zum möuse melken :)

shmia 14. Aug 2008 16:55

Re: Lazarus - Synapse - Connect funzt nicht
 
Zitat:

Zitat von LuCSteR
da gibts auch kein connect-befehl. mmh.

Login und Logout ;-)

LuCSteR 14. Aug 2008 17:00

Re: Lazarus - Synapse - Connect funzt nicht
 
mmmh so wie ich das sehe wird durch den constructor create vll ein connect durchgeführt? obwohl es recht seltsam wäre.
in der klasse TFTPSend (die ich nicht benutzt habe) gibt es noch function login, function logout. nur leider beider ohne paramterübergabe. geben nur nen boolschen wert zurück.

shmia 14. Aug 2008 17:07

Re: Lazarus - Synapse - Connect funzt nicht
 
Machst du jetzt normales FTP oder TFTP (Trivial FTP)?
Bei Trivial FTP brauchst du keinen User und kein Passwort und musst dich auch mit Login nicht anmelden.
Bei normalem FTP führt die Methode Login folgendes aus:
Connect and logon to FTP server. If you specify any FireWall, connect to firewall and throw them connect to FTP server. Login sequence depending on FWMode.

LuCSteR 14. Aug 2008 17:14

Re: Lazarus - Synapse - Connect funzt nicht
 
Zitat:

Zitat von shmia
Login und Logout ;-)

funtioniert leider nicht :( diese beiden funktionen sind ja auch nich in der klasse TTFTPSend vorhanden.
da gibts nur diese hier:
constructor Create;
destructor Destroy; override;
function SendFile(const Filename: string): Boolean;
function RecvFile(const Filename: string): Boolean;
function WaitForRequest(var Req: word; var filename: string): Boolean;
procedure ReplyError(Error: word; Description: string);
function ReplyRecv: Boolean;
function ReplySend: Boolean;

Und diese klasse hängt nur noch an der TSynaClient Klasse dran, welche auch keine connect oder login functionen liefert.
Gibts es jmd, den ich wegen dieser komponente direkt anschreiben könnte?

----

Erm ich werde sicherlich auf die FTPSend Unit umsteigen. Wie du geschrieben hast, ist es sinniger damit zu arbeiten.

shmia 14. Aug 2008 17:50

Re: Lazarus - Synapse - Connect funzt nicht
 
Zitat:

Zitat von LuCSteR
Erm ich werde sicherlich auf die FTPSend Unit umsteigen. Wie du geschrieben hast, ist es sinniger damit zu arbeiten.

Mach dich mal schlau über Trivial FTP und normales FTP.
Da gibt es grosse Unterschiede. Du hast nicht die Wahl, ob du die eine oder andere Klasse verwenden willst.
Trivial FTP -> TTFTPSend
Normales FTP -> TFTPSend

LuCSteR 14. Aug 2008 18:00

Re: Lazarus - Synapse - Connect funzt nicht
 
So jetzt hab ich kein Bock mehr. Wird morgen weiter gemacht.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  // Create TFTPClient
  FTPClient := TFTPSend.Create;
  Log.Lines.Add('TFTPClient created');

  // Set IP/Port/Username/Password
  FTPClient.FWHost:= IPEdit.Text;
  Log.Lines.Add('TargetSystem is ' + FTPClient.FWHost);
  FTPClient.FWPort:= PortEdit.Text;
  Log.Lines.Add('TargetPort is ' + FTPClient.FWPort);
  FTPClient.FWUsername:= UserEdit.Text;
  Log.Lines.Add('UserName is ' + FTPClient.FWUsername);
  FTPClient.FWPassword:= PassEdit.Text;
  Log.Lines.Add('Password is ' + FTPClient.FWPassword);
  FTPClient.FWMode:=1;
 
  // Connect
  if FTPClient.Login then Log.Lines.Add('Logged in!');
 
  // Delete
  if DeleteFile('/d:/test.txt') then Log.Lines.Add('Deleted!!');

  // Logout
  if FTPClient.Logout then Log.Lines.Add('Logged out!');
 
  // Free TFTPClient
  FTPClient.Free;
  Log.Lines.Add('TFTPClient destroyed');
end;
Login und demzufolge der Delete Befehl klappen immer noch nicht. Die Anwendung startet aber mehr auch nicht.
(Wenn ich nur Login bzw. Logout schreibe dann findet der compiler die function komischerweise nicht)
Ich finde auch nirgends eine Klassifizierung der FWMode - Möglichkeiten, außer das bei -1 die Login-Sequenz manuell gemacht werden kann. Blos wie das nun wieder geht, dazu gibts genauso viele Informationen wie zu FWMode. Nömlich keine :(

Bis morgen

LuCSteR 14. Aug 2008 18:31

Re: Lazarus - Synapse - Connect funzt nicht
 
Das funktioniert, sicherlich auch nur weil die LoginDaten per parameter übergeben werden. Aber es funktioniert ^^

Delphi-Quellcode:
if FtpGetFile(IPEdit.Text, PortEdit.Text, '/d:/text.txt', 'd:\test.txt', UserEdit.Text, PassEdit.Text)
then Log.Lines.Add('GET FILE');
Trotzdem muss es doch möglich sein, sich einzuloggen. Ein paar prozeduren durchlaufen zu lassen und sich dann wieder vom server verabschieden oder nicht?!


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

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