Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Delphi 10.4 - Indy und SFTP (https://www.delphipraxis.net/208298-delphi-10-4-indy-und-sftp.html)

Neumann 19. Jan 2023 19:29

AW: Delphi 10.4 - Indy und SFTP
 
Ich verwende Winscp. Lässt sich einfach über Script steuern, wobei so ein da ein 3-Zeiler reicht um z.B. alle Daten eines Verzeichnisses hochzuladen.

Klaus01 20. Jan 2023 06:20

AW: Delphi 10.4 - Indy und SFTP
 
.. möchte hier noch SecureBridge von DevArt erwähnen.
Kostet etwas - kommt ohne externe DLLs/Exen aus.
Sehr zuverlässig.

Grüße
Klaus

H.Bothur 20. Jan 2023 15:15

AW: Delphi 10.4 - Indy und SFTP
 
Moin,

hat keine eine Idee warum das Demoprogramm läuft und mein Miniprogramm nicht ? Ich habe mal versucht die Unterschiede rauszufinden. Das erste was mir auffällt ist das im Demoprogramm bereits zwei Libarys eingebunden werden:

Delphi-Quellcode:
  tgputtysftp in '..\tgputtysftp.pas',
  tgputtylib in '..\tgputtylib.pas';
Warum macht man so was wenn das eigentliche Programm in der Unit steckt und die Unit auch noch einmal die beiden Libarys in der Uses-Klausel aufführt ?

Zweitens: Im DemoProgramm wird die Variable (? Ist es das überhaupt) in dem private-Block vereinbart:

Delphi-Quellcode:
  private
    { Private declarations }
    PSFTP:TTGPuttySFTP;
Wenn ich das genauso mache und die TestSFTP Deklaration aus der var-Deklaration rausnehme und in den private-Block packe
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    TestSFTP :TTGPuttySFTP;
  public
    { Public-Deklarationen }
  end;
dann wird beim compilieren der erste Ausdruck
Delphi-Quellcode:
  TestSFTP := TTGPuttySFTP.Create(true);
gleich als "undeklarierter Bezeichner 'TestSFTP '" markiert und das Programm lässt sich nicht kompilieren.

Nur ... warum - was mache ich anders als das Demoprogramm ??

Gruss und Danke !
Hans

Klaus01 20. Jan 2023 15:20

AW: Delphi 10.4 - Indy und SFTP
 
.. wenn du die Instanz in einer Methode Deiner Form erstellst,
sollte die Klasse gefunden werden.

Wenn es eine Routine ausserhalb der TForm ist, kann sie nicht gefunden werden.

Grüße
Klaus

H.Bothur 20. Jan 2023 15:26

AW: Delphi 10.4 - Indy und SFTP
 
Zitat:

Zitat von Klaus01 (Beitrag 1517652)
.. wenn du die Instanz in einer Methode Deiner Form erstellst,
sollte die Klasse gefunden werden.

Wenn es eine Routine ausserhalb der TForm ist, kann sie nicht gefunden werden.

Danke - da habe ich mal wieder was dazugelernt ... jetzt kann ich das Programm wieder kompilieren und starten .. bekomme aber immer noch die Exception beim
Delphi-Quellcode:
TestSFTP := TTGPuttySFTP.Create(true);
:-(

Hat jemand eine Idee dazu ?
Hans

TurboMagic 20. Jan 2023 16:23

AW: Delphi 10.4 - Indy und SFTP
 
Zitat:

Zitat von Klaus01 (Beitrag 1492183)
.. wie schon geschrieben geht das mit Indy nicht.

DevArt - secure Bridge und nsoft - IpWorks haben SFTP Bibliotheken - kostenpflichtig.
Auf Basis von putty kann man sich auch einen SFTP Client bauen - Beispiele sind im Netz zu finden.
Seit Wiendows 10 kann man auch einen SFTP Client von der Console aufrufen.

Grüße
Klaus

Kommerziell gibt's auch noch: Clever Internet Suite. Lt. GetIt Trial Eintrag kann es SFTP (SSH).

Grüße
TurboMagic

Klaus01 20. Jan 2023 17:35

AW: Delphi 10.4 - Indy und SFTP
 
.. ich bekomme da keinerlei Fehlermeldung beim Create.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 gsftp :TTGPuttySFTP;
begin
  gsftp := TTGPuttySFTP.Create(true);
  gpsftp.HostName := '192.168.178.43';
  gpsftp.UserName := 'pi';
  gpsftp.Password := '********';
  gpsftp.Port := 22;
  gpsftp.Connect;
end;
Build 19 - 06 Mar 2022

Grüße
Klaus

H.Bothur 20. Jan 2023 18:52

AW: Delphi 10.4 - Indy und SFTP
 
Zitat:

Zitat von Klaus01 (Beitrag 1517660)
.. ich bekomme da keinerlei Fehlermeldung beim Create.

Build 19 - 06 Mar 2022

Grüße
Klaus

Und deswegen nehme ich an das ich bei den Einstellungen / Directorys usw. einen Fehler mache. Nur welchen ?
Ich habe den kompletten Pfad zu den Sources in der Bibliothek, setze das USE richtig ... und trotzdem PENG beim Connect.

Ich habe auch mal die entsprechende Libaray mit debugged, beim Create wird dann geprüft ob die TGPuttyLibAvailable ist und darin dann wieder irgendwelche StructSizes:

Delphi-Quellcode:
unction TGPuttyLibAvailable:Boolean;
var libpath:string;
    ulongsize,namesize,attrsize,namessize:Integer;

procedure CheckStructSizes;
begin
  tggetstructsizes(@ulongsize,@namesize,@attrsize,@namessize);
  if (ulongsize<>sizeof(TUnsignedLong)) or
     (namesize<>sizeof(fxp_name)) or
     (attrsize<>sizeof(fxp_attrs)) or
     (namessize<>sizeof(fxp_names)) then begin
     raise Exception.Create('Invalid '+tgputtydll+
                 ': uses different struct sizes: '+
                 'ulongsize='+IntToStr(ulongsize)+'/'+IntToStr(sizeof(TUnsignedLong))+
                 ',namesize='+IntToStr(namesize)+'/'+IntToStr(sizeof(fxp_name))+
                 ',attrsize='+IntToStr(attrsize)+'/'+IntToStr(sizeof(fxp_attrs))+
                 ',namessize='+IntToStr(namessize)+'/'+IntToStr(sizeof(fxp_names)));
     end
  end;
begin
  {$ifdef MSWINDOWS}
  Result:=true;
  CheckStructSizes;
  {$else}
  if TGPLH>0 then begin
     Result:=Assigned(tgputty_initcontext);
     Exit;
     end;

In meinem Testprogramm knallt es gleich bei dem ersten Test in folgender Zerile:

Delphi-Quellcode:
procedure tggetstructsizes(const Pulongsize,Pnamesize,Pattrsize,Pnamessize:PInteger); cdecl; external tgputtydll {$ifdef HASDELAYED}delayed{$endif};
Nur leider sind das für mich endgültig bömische Dörfer ... sagt das jemandem was ??

Gruss
Hans

Klaus01 21. Jan 2023 08:46

AW: Delphi 10.4 - Indy und SFTP
 
Guten Morgen,

hast Du diese dll (tgputtylib.dll) in dem gleichen Verzeichnis wo Deine exe liegt?

im Project Source

Delphi-Quellcode:
program Project1;
uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1},
  tgputtylib in 'tgputtylib.pas',
  tgputtysftp in 'tgputtysftp.pas',
  tgputtysftpclient in 'tgputtysftpclient.pas';
In der From Unit:
Delphi-Quellcode:
implementation
uses
  tgputtylib, tgputtysftp;
{$R *.dfm}
Mehr habe ich nicht geändert.

Grüße
Klaus

H.Bothur 21. Jan 2023 12:38

AW: Delphi 10.4 - Indy und SFTP
 
Moin Klaus,

nein - die DLL hatte ich bisher nicht im Verzeichnis - jetzt ist sie drin.

Es ändert sich nur leider überhaupt nichts, es knallt immer noch und Delphi sucht dann die Quelldatei "delayhlp.cpp" ??
Und zawr passiert das genau an dieser Stelle:

Delphi-Quellcode:
function tggetlibrarycontextsize:Integer; cdecl; external tgputtydll {$ifdef HASDELAYED}delayed{$endif};
Sagt das jemandem was ??

Hans


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 Uhr.
Seite 2 von 4     12 34      

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