Einzelnen Beitrag anzeigen

Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#8

AW: Rückgabe von CommandLineToArgvW

  Alt 17. Sep 2010, 12:33
Ich habe auch was

1. CommandLineToArgvW verwendet LocalAlloc und daher sollte LocalFree verwendet werden (das macht aber in 32bit nichts mehr aus, da es dasselbe ist. Aber MSDN sagt es halt so

2. try/except ist hier garnicht notwendig, ja sogar total falsch, da GetLastError verwendet wird, was falsche Werte liefert, weil keine Winapi so eine Exception wirft (könnte auch eine AV sein)

3. Das Prüfen des Rückgabewertes von CommandLineToArgvW auf nil ist ein Fehler, denn hier wird Speicher alloziert, jedoch nicht freigegeben. Weiterhin gibt es nur zwei Fälle, die ein nil produzieren
  • Zweiter Parameter ist nil. (GetLastError = ERROR_INVALID_PARAMETER)
  • LocalAlloc kann kein Speicher allokieren. (GetLastError = ERROR_NOT_ENOUGH_MEMORY)
Es wäre also besser, den Rückgabewert in eine Variable zu speichern und dann zu prüfen oder sie zu verwenden.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat