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.