Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Abfrage (https://www.delphipraxis.net/132254-abfrage.html)

xXxKoGaxXx 8. Apr 2009 19:38

Re: Abfrage
 
ups, also ohne download meinte ich das die datei nicht zu finden ist dann aufm dem computer ...

jaenicke 8. Apr 2009 19:38

Re: Abfrage
 
Du musst die Datei herunterladen, sonst kannst du nicht deren Inhalt nutzen. Via FTP kann man die Datei AFAIK nicht nur im Arbeitsspeicher benutzen, sondern muss diese wirklich herunterladen. Das kann aber ja im Verzeichnis für temporäre Dateien passieren und die kann ja sofort wieder gelöscht werden.

mkinzler 8. Apr 2009 19:39

Re: Abfrage
 
Zitat:

Zitat von xXxKoGaxXx
ups, also ohne download meinte ich das die datei nicht zu finden ist dann aufm dem computer ...

? :gruebel:

Cyf 8. Apr 2009 19:40

Re: Abfrage
 
Dann lad sie in den RAM? Wobei man sie auch dort auslesen kann.

xXxKoGaxXx 8. Apr 2009 19:41

Re: Abfrage
 
kann mir wer ein code beispiel zeigen?
bitte

mkinzler 8. Apr 2009 19:43

Re: Abfrage
 
Für FTP oder das laden in einen MemoryStream?

jaenicke 8. Apr 2009 19:44

Re: Abfrage
 
Also ich kenne keine FTP-Funktion um eine Datei ohne Zwischenspeicherung auszulesen, weder bei Indy noch per API. Man könnte höchstens den Befehl selbst schicken und dann das Ergebnis selbst auswerten. Aber FtpGetFile usw. können eine Datei nur lokal speichern.

Am besten nimm Indy und TIdFTP, lade die Datei ins Verzeichnis für temporäre Dateien, werte sie aus und lösche sie sofort wieder. Die Auswertung geht schnell und sicher ist das Verfahren ja ohnehin nicht, deshalb ist das ja egal, dass die Datei kurz dort zu finden ist.

xXxKoGaxXx 8. Apr 2009 19:47

Re: Abfrage
 
Was ich schon hab ist eben das:

Delphi-Quellcode:
function getfile(server, username, password, localfile, remotefile: string; port: word = 21): boolean;
var
  hopen, hconnect: HINTERNET;
begin
  hopen := InternetOpen('myagent', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
  hconnect := InternetConnect(hopen, pchar(server), port, pchar(username), pchar(password), INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
  Result := FtpGetFile(hconnect, pchar(localfile), pchar(remotefile), false, 0, FTP_TRANSFER_TYPE_UNKNOWN, 0);
  InternetCloseHandle(hconnect);
end;
und jetzt möcht ich das überprüfen lassen wie ich es schonmal geschieben hab und die datei mit dem passwort kann gedownloadet werden, sollte aber wieder direkt gelöscht werden. Wie gesagt es ist nur im netzwerk ...

jaenicke 8. Apr 2009 19:51

Re: Abfrage
 
So machst du es dir unnötig schwer, denn Indy und TIdFTP ist da sehr viel einfacher. Aber gut.

Der Rückgabewert sollte dir anzeigen, ob die Datei erfolgreich gefunden und heruntergeladen werden konnte. Wenn ja, dann kannst du jetzt die lokale Datei öffnen und auslesen:
Delphi-Quellcode:
var
  MyFile: TStringList;
  PasswordMatches: Boolean;
begin
  MyFile := TStringList.Create;
  try
    MyFile.LoadFromFile(YourFileName);
    PasswordMatches := Trim(MyFile.Text) = YourPassword;
  finally
    MyFile.Free;
  end;
end;
Wobei YourPassword das zu prüfende Passwort, YourFileName die lokale heruntergeladene Datei und PasswordMatches die Variable für das Ergebnis des Passwortvergleichs ist.

mkinzler 8. Apr 2009 19:55

Re: Abfrage
 
Wobei du die Datei mit idFtp.Get() gleich in einen MemoryStream laden kannst und so keine lokale datei geschriben wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:51 Uhr.
Seite 2 von 3     12 3      

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