Ups, falsch geguckt. Dachte im TSecurityAttributes gibt es auch ein paar "Char".
Wenn die
API keine Chars als Parameter oder in Records hat, dann braucht man sie natürlich nicht doppelt.
Microsoft kam auf die geile
IDE seine Webseite umzubauen, so funktionieren viele Links nicht mehr.
https://docs.microsoft.com/en-us/win...api-createpipe
https://docs.microsoft.com/en-us/pre...79560(v=vs.85) = toter Link
https://docs.microsoft.com/en-us/pre...79560(v=vs.85) = richtig
anderes Beispiel, was dich aber betrifft (CreateProcessA)
https://docs.microsoft.com/en-us/win...createprocessa
wobei hier nun "alles" mit W, weil ja jetzt
unicode, aber da dein ACommand und AParameters Strings und keine UnicodeStrings sind, hier natürlich "alles" dynamisch und ohne A oder W.
Und natürlich muß auch OemToAnsi unbedingt als
ANSI implementiert werden, A) weil
ANSI ankommt und B) weil man bei der
Unicode-Version mit den Parametern aufpassen muß, denn dort ist es verboten inplace übersetzen zu lassen, also
niemals mit dem selben Ein- und Ausgabepuffer.
Alles was pBuffer betrifft muß
ANSI sein, vor der Übersetung OEM to
ANSI (ich weiß, aber OEM ist auch eine
ANSI-Codepage und mit "ToANSI" ist hier die lokale
ANSI-Codepage gemeint)
Aber ich würde statt
OemToAnsi empfehlen TMBCSEncoding.Create(437, 0, 0) oder TEncoding.GetEncoding(437) zu verwenden.
https://docs.microsoft.com/en-us/win...ntl/code-pages
Allerdings kommt es auch drauf an, was für eine
ANSI-Codepage wirklich aus dem Programm kommt,
denn das kann OEM,
ANSI, UTF-8 oder sonstwas sein,
somit wäre es bestimmt intelligent die CP_OEM (437) nicht direkt zu übergeben, sondern als Parameter.