AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Delphi 10.4 - Indy und SFTP
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 10.4 - Indy und SFTP

Ein Thema von H.Bothur · begonnen am 11. Jul 2021 · letzter Beitrag vom 2. Mai 2023
Antwort Antwort
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
252 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Delphi 10.4 - Indy und SFTP

  Alt 20. Apr 2023, 11:36
Das hatte ich gesehen - und in der Items sind auch die entsprechenden Dateinamen. Die ganze Procedure sieht so aus:

Delphi-Quellcode:
function TVCLSFTPClientComponentDemoForm.TGPuttySFTPClient1SFTPListing(Sender: TObject; const Items: TSFTPItems): Boolean;
var StartRow,i:Integer;
begin
  StartRow:=sgRemoteFiles.RowCount;
  sgRemoteFiles.RowCount:=StartRow+Length(Items);
  for i:=0 to Length(Items)-1 do begin
    sgRemoteFiles.Cells[0,StartRow+i]:=Items[i].filename;
    sgRemoteFiles.Cells[1,StartRow+i]:=DateTimeToStr(TTimeZone.Local.ToLocalTime(UnixToDateTime(Items[i].attrs.mtime)));
    if Items[i].attrs.permissions and $F000 = $4000 then
       sgRemoteFiles.Cells[2,StartRow+i]:='<dir>'
    else
       sgRemoteFiles.Cells[2,StartRow+i]:=IntToStr(Items[i].attrs.size);
    end;
  Result:=true;
end;
Da wird das StringGrid gefüllt - nur woher hat die Produre die Items ?

Gruss
Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
shebang

Registriert seit: 7. Feb 2020
101 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Delphi 10.4 - Indy und SFTP

  Alt 20. Apr 2023, 12:17
Die Items bekommt die Funktion direkt vom TTGPuttySFTPClient Objekt übergeben:
Code:
OnSFTPListing = TGPuttySFTPClient1SFTPListing
siehe DelphiVCLComponentDemo/VCLSFTPClientComponentMainForm.dfm#L285
  Mit Zitat antworten Zitat
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
252 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Delphi 10.4 - Indy und SFTP

  Alt 20. Apr 2023, 17:32
Moment - das ist OOP ... etwas was ich in den letzten 10 Jahren schon nicht verstanden habe

wenn ich also TGPuttySFTPClient1.ListDir(''); aufrufe, dann wird automatisch der Inhalt des Directoerys übergeben .. nur ich verstehe nicht wohin bzw. wie ich dann darauf zugreife, denn in der procedure

function TGPuttySFTPClient1SFTPListing(Sender: TObject; const Items: TSFTPItems): Boolean; sind die Items ja schon drin

Wie funktioniert das denn ?

Gruss
Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.369 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Delphi 10.4 - Indy und SFTP

  Alt 20. Apr 2023, 20:36
Der Ablauf:
Delphi-Quellcode:
procedure ListDir;
begin
  ...
  if Assigned(FOnSFTPListing) then
    FOnSFTPListing(Self, Items);
end;
Sprich du gibst der Komponente in der Eigenschaft OnSFTPListing eine Referenz auf deine Prozedur TGPuttySFTPClient1SFTPListing. Die Komponente ruft dann deine Prozedur auf, wenn sie das Listing erhalten hat. Hintergrund ist vermutlich, dass das asynchron funktioniert, sprich ListDir schon wieder beendet ist, wenn das Ergebnis ankommt und deine Ereignisprozedur aufgerufen wird.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.369 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Delphi 10.4 - Indy und SFTP

  Alt 20. Apr 2023, 21:47
Da ich sehe, dass du online bist, mache ich mal eine neue Antwort:
Stell dir das einfach so vor...

Du gehst zur Hotelrezeption (die SFTP-Komponente) und lässt dir ein Taxi rufen. Dort hinterlegst du deine Telefonnummer (deine Ereignisfunktion TGPuttySFTPClient1SFTPListing), damit die Rezeption (die SFTP-Komponente) dir Bescheid sagen kann, wenn das Taxi da ist (das Listing abgerufen ist). Wenn das Taxi dann ankommt (das Listing da ist), ruft dich die Rezeption (die SFTP-Komponente) unter der hinterlegten Telefonnummer (der Ereignisfunktion) zurück und nennt dir dabei zur Identifikation das Kennzeichen des Taxis (der an die Funktion übergebene Inhalt des Listings).
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
252 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Delphi 10.4 - Indy und SFTP

  Alt 21. Apr 2023, 16:08
Moin Sebastian,

vielen Dnak für die Infos und deine Mühe !!! ... ich versuche das morgen mal in Source umzusetzen und zu kucken ob ich das hinbekomme.

Gruss
Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
252 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Delphi 10.4 - Indy und SFTP

  Alt 27. Apr 2023, 16:14
Moin,

sorry das ich jetzt erst weitermache - aber die letzten Tage habe ich es nicht geschafft.

Nur damit ich das richtig sehe ... im Source der Demo finde ich folgende Stelle:

Delphi-Quellcode:
procedure TVCLSFTPClientDemoForm.FormCreate(Sender: TObject);
begin
  PSFTP:=TTGPuttySFTP.Create(true);
  PSFTP.OnListing:=ListingCallback;
  PSFTP.OnMessage:=MessageCallback;
  PSFTP.OnProgress:=ProgressCallback;
  PSFTP.OnGetInput:=GetInputCallback;
  PSFTP.OnVerifyHostKey:=VerifyHostKeyCallback;
end;
Hier wird also einmal das Objekt "PSFTP" erzeugt und für die verschiedenen Ereignisse (OnListing / OnMessage / OnProgress) jeweils definiert welche Procedure dann aufgerufen wird ?

Sorry wenn ich so doff Frage aber das ist nicht mehr dieses "von-oben-nach-unten"-Programmieren das ich aus den 80ern kenne

Gruss
Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr.
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