![]() |
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.
|
AW: Delphi 10.4 - Indy und SFTP
.. möchte hier noch
![]() Kostet etwas - kommt ohne externe DLLs/Exen aus. Sehr zuverlässig. Grüße Klaus |
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:
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 ?
tgputtysftp in '..\tgputtysftp.pas',
tgputtylib in '..\tgputtylib.pas'; Zweitens: Im DemoProgramm wird die Variable (? Ist es das überhaupt) in dem private-Block vereinbart:
Delphi-Quellcode:
Wenn ich das genauso mache und die TestSFTP Deklaration aus der var-Deklaration rausnehme und in den private-Block packe
private
{ Private declarations } PSFTP:TTGPuttySFTP;
Delphi-Quellcode:
dann wird beim compilieren der erste Ausdruck
type
TForm1 = class(TForm) ListBox1: TListBox; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } TestSFTP :TTGPuttySFTP; public { Public-Deklarationen } end;
Delphi-Quellcode:
gleich als "undeklarierter Bezeichner 'TestSFTP '" markiert und das Programm lässt sich nicht kompilieren.
TestSFTP := TTGPuttySFTP.Create(true);
Nur ... warum - was mache ich anders als das Demoprogramm ?? Gruss und Danke ! Hans |
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 |
AW: Delphi 10.4 - Indy und SFTP
Zitat:
Delphi-Quellcode:
:-(
TestSFTP := TTGPuttySFTP.Create(true);
Hat jemand eine Idee dazu ? Hans |
AW: Delphi 10.4 - Indy und SFTP
Zitat:
Grüße TurboMagic |
AW: Delphi 10.4 - Indy und SFTP
.. ich bekomme da keinerlei Fehlermeldung beim Create.
Delphi-Quellcode:
Build 19 - 06 Mar 2022
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; Grüße Klaus |
AW: Delphi 10.4 - Indy und SFTP
Zitat:
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:
Nur leider sind das für mich endgültig bömische Dörfer ... sagt das jemandem was ??
procedure tggetstructsizes(const Pulongsize,Pnamesize,Pattrsize,Pnamessize:PInteger); cdecl; external tgputtydll {$ifdef HASDELAYED}delayed{$endif};
Gruss Hans |
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:
In der From Unit:
program Project1;
uses Vcl.Forms, Unit1 in 'Unit1.pas' {Form1}, tgputtylib in 'tgputtylib.pas', tgputtysftp in 'tgputtysftp.pas', tgputtysftpclient in 'tgputtysftpclient.pas';
Delphi-Quellcode:
Mehr habe ich nicht geändert.
implementation
uses tgputtylib, tgputtysftp; {$R *.dfm} Grüße Klaus |
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:
Sagt das jemandem was ??
function tggetlibrarycontextsize:Integer; cdecl; external tgputtydll {$ifdef HASDELAYED}delayed{$endif};
Hans |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:45 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