Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Alte Komponente von D7 in Tokyo überführen (https://www.delphipraxis.net/201618-alte-komponente-von-d7-tokyo-ueberfuehren.html)

Dumpfbacke 7. Aug 2019 19:03

Alte Komponente von D7 in Tokyo überführen
 
Hallo Leute,
wir haben hier ein alte Komponene welcher wir früher immer unter Delpi 7 benutzt haben. Nun soll / müssen wir ein altes Projekt nach Tokyo bringen. Für die Komponenten liegt uns der Source vor und ich dachte ich versuche es einfach einmal unter Tokyo zu installieren und hatte schon etliche Fehler erwartet. Es komen bis jetzt jeodch nur zwei Stück. Ich bin mir aber nicht sicher ob er wiklich alle pas Dateien schon versucht hat. Die zwei Fehler sind:

Delphi-Quellcode:


[dcc32 Fehler] IPutils.pas(186): E2267 Bei der vorherigen Deklaration von RecvUdpBuf wurde die Direktive 'overload' nicht angegeben


function RecvUdpBuf(const Socket: TSocket; var Buf; Size: Integer; var IP: string; var Port: Integer; var BufSize: Integer): Boolean;



[dcc32 Fehler] IPutils.pas(225): E2010 Inkompatible Typen: 'PAnsiChar' und 'PWideChar'


Remote.sin_addr.S_addr := inet_addr(PChar(IP));
Kann mir hier jemand helfen und mir sagen was ich hier ggf anpassen lann. Beim zweiten vermute ich einmla das ich PAnsichar benutzten muss. Aber was mache ich beim ersten Fehler ? In der pas Datei gibt es die Function nur ein mal.

Danke schon einmal an Euch Tanja

TurboMagic 7. Aug 2019 19:31

AW: Alte Komponente von D7 in Tokyo überführen
 
Hallo Tanja,

zur Beseitigung der ersten Meldung: mal suchen, ob es irgendwo sonst eine weitere Deklaration
von RecvUdpBuf gibt die sich unterscheidet.

Ggf. über "Find in files" und dort "In Ordner und Unterordner" suchen lassen.

Zum zweiten fehler:
In D2009 wurde ja auf Unicode umgestellt. Dadurch wurde auch aus dem PChar ein PWideChar,
da vermutet wurde, dass der PChar in den meisten Fällen zum Aufruf von WinAPI Funktionen
benutzt wird, die dann aber typischerweise auch auf die WideChar Variante umwechseln.

Was richtig ist hängt jetzt ein wenig von inet_addr und dessen Deklaration ab.
=> diese mal anschauen (z.B. rechtsklick -> gehe zur Definition) und dann als Datentyp
benutzen was dort gewünscht wird. Entweder PAnsiChar oder PWideChar.

Grüße und viel Erfolg
TurboMagic

hoika 7. Aug 2019 20:38

AW: Alte Komponente von D7 in Tokyo überführen
 
Hallo,
Zitat:

function RecvUdpBuf(const Socket: TSocket; var Buf; Size: Integer; var IP: string
Zeige doch mal die Signatur dieser Funktion im Interface- und im Implementation-Teil.
Und ja, es liegt an string.

Ich würde das erst mal durch AnsiString ersetzen.
Wenn das nicht klappt, hast du viell. eine abgeleitete Komponente oder benutzt z.B. Indy (TUdpSocket),
wo die Methode RecvUdpBuf jetzt anders definiert ist.

PS:
Wie bereits vorher geschrieben, hat es etwas mit Unicode zu tun.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:50 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