Autor Beitrag
GerhardS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49



BeitragVerfasst: Do 19.07.18 12:03 
Hallo,
ich habe mich seit Delphi XE2 nicht mehr mit Object Pascal beschäftigt. Jetzt arbeite ich mit der Community Edition von Delphi 10.2 und kann die Unit uMySFTPClient von Zeljko Marjanovic nicht mehr benutzen. Der Compiler gibt den Fehler E2010 (Inkompatible Typen: 'Dynamic array' und 'Pointer') aus für die Anweisung FHashMgr.GetFingerprint(FHost, FPort). FHost ist definiert als String, FPort ist definiert als Word.
In XE2 hat der Compiler das klaglos akzeptiert. Offensichtlich werden in 10.2 Typen anders definiert als in XE2. Weiß jemand eine Abhilfe?
Nachtrag:
Die Funktion GetFingerprint ist so definiert:
function GetFingerprint(const AHost: String; APort: Word): Pointer; overload;
Inzwischen habe ich gelesen, dass ab v. 10.2 es nicht mehr möglich ist, einen Pointer auf ein dynamisches Array zuzuweisen, und dass man die Größe des Arrays mit SetLength festlegen muss.
Also habe ich die Variable iSize mit dem Datentyp Word definiert, mit dem Wert 22 (Default-Wert) initialisiert und angewiesen:
SetLength(FPort, iSize);
Im Ergebnis habe ich jetzt zwei Compilerfehler. E2008 für SetLength(FPort, iSize) und E2010 für StoredFingerprint := FHashMgr.GetFingerprint(FHost, FPort).
Was nun?
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 19.07.18 18:11 
- Nachträglich durch die Entwickler-Ecke gelöscht -
GerhardS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49



BeitragVerfasst: Fr 20.07.18 12:28 
Danke für den Hinweis. Diese Version generiert zwar drei andere Fehler, vermeidet aber den Fehler E2010 an dieser Stelle durch ein Typecast:
Pointer(StoredFingerprint) := FHashMgr.GetFingerprint(FHost, FPort);
statt vorher:
StoredFingerprint := FHashMgr.GetFingerprint(FHost, FPort);
Damit kann auch SetLength entfallen.