Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Migration von Quelltext Delphi 2006 -> XE3 (https://www.delphipraxis.net/172169-migration-von-quelltext-delphi-2006-xe3.html)

DonManfred 17. Dez 2012 09:08

Delphi-Version: XE2

Migration von Quelltext Delphi 2006 -> XE3
 
Moin zusammen,

ich habe hier ein grösseres Projekt von Delphi 2006 auf XE3 umzustellen und hänge an einer Stelle.

Ich habe hier nun kein XE3 zur Verfügung und kann keine Fehlermeldungen mitteilen, reiche diese aber gerne heute abend nach.

Delphi-Quellcode:
function dosascii(AText:String):String;
const MaxLength = 16384;
var PText : PChar;
begin
  AText := StringReplace(AText,'€','Euro',[rfReplaceAll]);
  AText := StringReplace(AText,'%bslash%','\',[rfReplaceAll]);
  PText:=StrAlloc(MaxLength);
  StrPCopy(PText,AText);
  {$IFDEF WIN32}
  CharToOEM(PText,PText); {32Bit}
  {$ELSE}
  AnsiToOEM(PText,PText); {16Bit}
  {$ENDIF}
  Result:=StrPas(PText);
  //Result := AText;
  StrDispose(PText);
end;
Problematisch ist der Aufruf
Delphi-Quellcode:
CharToOEM(PText,PText); {32Bit}
Was muss ich bei einer Umstellung von Delphi 2006 auf Delphi XE3 beachten? Gibt es da irgendwelche FAQs oder ähnliches?

Wenn ich das richtig im Kopf habe dann habe ich versucht PText und FText auf Ansistring umzustellen aber dann kam wieder ein neuer Fehler. Genaue Fehlermeldungen/Compilermeldung reiche ich heute abend nach.

Vielen Dank im vorraus für jegliche Hinweise die zur ergreifung des schuldigen beitragen :D

Edith: In dem Dropddown bei erzeugung des Threads kann ich XE3 nicht auswählen; die Liste geht nur bis XE2

DeddyH 17. Dez 2012 09:14

AW: Migration von Quelltext Delphi 2006 -> XE3
 
Aus dem MSDN:
Zitat:

The destination buffer, which receives the translated string. If the CharToOem function is being used as an ANSI function, the string can be translated in place by setting the lpszDst parameter to the same address as the lpszSrc parameter. This cannot be done if CharToOem is being used as a wide-character function.
Übrigens:
Zitat:

Using this function incorrectly can compromise the security of your application.

Uwe Raabe 17. Dez 2012 09:28

AW: Migration von Quelltext Delphi 2006 -> XE3
 
Mach es dir doch einfach:

Delphi-Quellcode:
type
  OEMString = type AnsiString(850);

function dosascii(AText:String): OEMString;
begin
  AText := StringReplace(AText,'€','Euro',[rfReplaceAll]);
  AText := StringReplace(AText,'%bslash%','\',[rfReplaceAll]);
  result := OEMString(AText);
end;

DonManfred 28. Dez 2012 09:45

AW: Migration von Quelltext Delphi 2006 -> XE3
 
Sorry für die späte Antwort; ich kam aufgrund der Feiertage erst jetzt dazu das auszuprobieren. Funktioniert super. vielen Dank, Uwe!

Die anderen kleinigkeiten habe ich selber hinbekommen. Lediglich diese Funktion hatte schwierigkeiten bei der Migration gemacht... Eins von 10 Programmen ist nun mit XE3 weiterentwickelbar... Eins von den umfangreicheren allerdings. Ein weiteres umfangreiches und 8 kleine Tools fehlen noch. Das 2. grosse macht vielleicht nochmal ein bissl arbeit aber auch das wird hinhauen denke ich. Bei den kleinen Tools sehe ich keine Probleme.


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