Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

AW: cmd output in memo - Bug

  Alt 28. Jul 2020, 20:03
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 MSDN-Library durchsuchenOemToAnsi 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.
$2B or not $2B

Geändert von himitsu (28. Jul 2020 um 20:31 Uhr)
  Mit Zitat antworten Zitat