Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Projekt von Delphi 2007 auf Delphi 2010 umstellen (https://www.delphipraxis.net/157603-projekt-von-delphi-2007-auf-delphi-2010-umstellen.html)

Jerry 18. Jan 2011 08:23

Projekt von Delphi 2007 auf Delphi 2010 umstellen
 
Hallo zusammen

Ich brauche die Unit JwaWinType.
Beim Kompilieren erhalte ich folgende Meldung: Inkompatible Typen Char und AnsiChar.
Wie muss ich den Code anpassen, dass es für Delphi 2010 stimmt? (ist im unteren code entsprechend markiert)

Vielen Dank für Eure Info!
Grüsse Jerry

Delphi-Quellcode:
procedure GetProcedureAddress(var P: Pointer; const ModuleName, ProcName: string);
var
  ModuleHandle: HMODULE;
begin
  if not Assigned(P) then
  begin
    ModuleHandle := GetModuleHandle(PChar(ModuleName));
    if ModuleHandle = 0 then
    begin
      ModuleHandle := LoadLibrary(PChar(ModuleName));
      if ModuleHandle = 0 then
        raise EJwaLoadLibraryError.CreateFmt(RsELibraryNotFound, [ModuleName]);
    end;
    P := Pointer(GetProcAddress(ModuleHandle, PChar(ProcName)));   // hier ist die Fehlermeldung !!!!
    if not Assigned(P) then
      raise EJwaGetProcAddressError.CreateFmt(RsEFunctionNotFound, [ModuleName, ProcName]);
  end;
end;

himitsu 18. Jan 2011 08:33

AW: Projekt von Delphi 2007 auf Delphi 2010 umstellen
 
Diese JWA (JediWindowsApi) ist uralt und nicht mehr für eine Verwendung vorgesehn ... steig mal auf was Neueres um, da es darin auch ein paar kleinere Unicode-Problemchen gibt und es somit unter D2009+ etwas rumzickt.
http://www.delphipraxis.net/155173-w...ml#post1061282 (genau das selbe Problem wurde in diesem Thread auch mit besprochen)

Ich selber nutzte derartige Codes auch nur noch für Testzwecke und zum Abgucken von API-Headern ... aber von eine richtigen Einsatz dieser Codes rate ich eher ab.

Jerry 18. Jan 2011 08:40

AW: Projekt von Delphi 2007 auf Delphi 2010 umstellen
 
Hallo himitus

ja da hast du recht... Sie ist wirklich alt.

Ich brauche die Unit um RDC-direkt per Mausklick zu starten. Ich habe mir "nur" das nötigste aus dem JediWindowsAPI gezogen.

Vielleicht reicht ja eine kleine Anpassung und ich kann das "alte" trotzdem gut verwenden?

Bernhard Geyer 18. Jan 2011 08:47

AW: Projekt von Delphi 2007 auf Delphi 2010 umstellen
 
Wie schaut die Signatur der Funktion "GetProcAddress" aus?
Ich tipp mal darauf das die ein PAnsiChar benötigt.

Jerry 18. Jan 2011 08:53

AW: Projekt von Delphi 2007 auf Delphi 2010 umstellen
 
Hallo Bernhard

Hier die geforderte Information:


function GetProcAddress(hModule: HMODULE; lpProcName: LPCSTR): FARPROC; external kernel32 name 'GetProcAddress';

Kannst Du was damit anfangen?

Ich habe den Code in der Zwischenzeit folgendermassen geändert:

P := Pointer(GetProcAddress(ModuleHandle, PAnsiChar(ProcName)));

Der Kompiler schluckt den Code, gibt aber eine Warung aus, die heisst: Bedenkliche Typumwandlung von String in PAnsiChar.

Gruss Jerry

Bernhard Geyer 18. Jan 2011 09:10

AW: Projekt von Delphi 2007 auf Delphi 2010 umstellen
 
Du brauchst noch eine lokalen AnsiString

Delphi-Quellcode:
var
  ProcNameAnsi: AnsiString;
begin
  ...
  ProcNameAnsi := ProcName;
  P := Pointer(GetProcAddress(ModuleHandle, PAnsiChar(ProcNameAnsi)));

Jerry 18. Jan 2011 09:22

AW: Projekt von Delphi 2007 auf Delphi 2010 umstellen
 
Vielen Dank, das scheint zu klappen.

Erhalte aber trotzdem noch folgende Fehlermeldung:

W1058 Implizite String-Umwandlung mit potetiellem Datenverlust von String zu AnsiString.

Ich denke aber ist bei mir nicht relevant? Was meinst Du?

Gruss Jerry.

SirThornberry 18. Jan 2011 11:48

AW: Projekt von Delphi 2007 auf Delphi 2010 umstellen
 
Das ist keine Fehlermeldung sondern eine Warnung ;-) Und die sagt nichts anderes aus als dass bei der Umwandlung zu Ansistring Daten verloren gehen können. Ist ja auch logisch, man muss sich dessen eben nur bewusst sein (zum Beispiel wenn umlaute etc. enthalten sind das diese je nach Sprache bei der Umwandlung verloren gehen)

Jerry 18. Jan 2011 12:05

AW: Projekt von Delphi 2007 auf Delphi 2010 umstellen
 
Super, vielen Dank. Jedenfalls passt es so, es funzt.

Grüsse Jerry


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