![]() |
Re: Mein guter Freund Mr. ShellExecute
Klar will ShellExecute bei DIR einen PWideChar, da
Delphi 2009/2010: ShellExecute = ShellExecuteW und das will PWideChar | PChar = PWideChar "älteres" Delphi: ShellExecute = ShellExecuteA und das will PAnsiChar | PChar = PAnsiChar Wenn man jetzt das veränderliche ShellExecute mit dem festen PWideChar mischt, dann kann es zu Problemen kommen. z.B. in Delphi 2007 und älter will ShellExecute einen PChar aka PAnsiChar, wärend in deinem Code PWideChar fest vorgegeben ist. Und irgendwann kommt UCS4, wo dann ShellExecute das 4-Byte-Unicode will, wärend PWideChar nur ein 2-Byte-Unicode liefert Also NIEMALS derartige Sachen mischen
Code:
Einzig und alleine bei Char und String wäre eine Vermischung möglich, da Delphis CompilerMagic dort eine automatische Typumwandlung implementiert hat, aber auch da "meckert" der Compiler und warnt vor eventuellen Datenverlusten, Aufgrund "unkontrollierter" Umwandlungen.
[color=silver]Api[/color] - Char - String - CharArray - PChar
[color=silver]Api[/color]A - AnsiChar - AnsiString - AnsiCharArray - PAnsiChar [color=silver]Api[/color]W - WideChar - WideString/UnicodeString - WideCharArray - PWideChar Wenn Daten nicht Bytegenau und Typsicher gespeichert oder übertagen werden sollen, dann einfach die 1. Variante (mit String und Co.) verwenden, da sie sich an den genutzen Compiler und seine Standardfunktionen anpaßt. Ansonsten sollte man es genau definieren, damit z.B. bei Compiler/IDE-Upgrade sich nichts verändert. > Char String PChar Integer Cardinal Pointer und die APIs ohne A/W sind dieser Veränderlichen |
Re: Mein guter Freund Mr. ShellExecute
Das hat Microsoft besser gelöst. Wenn ich dort in einem Programm ShellExecute benutze, wird je nach Kompilereinstellungen ShellExecuteA oder ShellExecuteW benutzt. Wenn ich dann noch das Makro _T (oder so) benutze, dann werden auch die zeichenketten passend konvertiert.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz