Einzelnen Beitrag anzeigen

ulilüding

Registriert seit: 23. Okt 2010
Ort: Berlin
33 Beiträge
 
Delphi 5 Professional
 
#1

ftp mit wininet

  Alt 21. Mai 2012, 08:05
Delphi-Version: 5
Hi Leute,

ein Service-Programm greift u.A. auf einen FTP-server per FTPCommand zu. Dazu wird die wininet.pas eingebunden, das Kommando wird übegeben mit (Auszug aus Programmcode)

FtpCommand(connection_handle,true,FTP_TRANSFER_TYP E_ASCII,PChar('LIST '+currentDirectory),0,@data_handle)

sieht man sich wininet.pas an so wird die Sache einfach weitergereicht an die wininet.dll (winetdll ist als Konstante für wininet.dll deklariert)

function FtpCommand; external winetdll name 'FtpCommandA';

Die Parameter des Aufrufs stimmen anscheinened (Auszug ebenfalls aus der wininet.pas)

function FtpCommand(hConnect: HINTERNET; fExpectResponse: BOOL; dwFlags: DWORD; lpszCommand: PChar; dwContext: DWORD; phFtpCommand: PHINTERNET): BOOL; stdcall;

Nun zum Problem:
- Das ganze unter WIN XP kompiliert laüft einwandfrei (nutzt wininet.dll von XP)
- Dieses Kompilat als exe unter WIN 7 läuft einwandfrei (nutzt wininet.dll von WIN 7)
- Versuch, den gleichen code unter WIN 7 zu kompilieren, scheitert mit der Bemerkung: zu viele Parameter. Offensichtlich hält der Compiler die Angabe des data-handle-Pointer für überflüssig. Läßt man den weg, so wird brav kompiliert, aber das Programm hängt sich an dieser Stelle natürlich auf (wohin auch mit der LIST?)

Die wininet.pas ist unter beiden Bettriebssystemen identisch. Die wininet.dll kann auf beiden Betriebssystemen unterschiedlich sein, allerdings benutzt die unter XP kompilierte exe die WIN 7 dll offensichtlich problemlos. Unter beiden Betreibssystemen läuft eine identische Delphi 5 Installation.

Dankbar für jede schlaue Idee
Uli Lüding
eben der mit space
  Mit Zitat antworten Zitat