Forum: Win32/Win64 API (native code)
Delphi
by KodeZwerg,
3. Apr 2018
Mit dem "System.SetLastError(ERROR_SUCCESS);" wollte ich halt Verhindern das aus dem Programm heraus irgendwelche Fehler-Meldungen aufploppen könnten wenn die Funktion ThousandSeparator aufgerufen wird.
Die Delphi Hilfe über RaiseLastOSError brachte mich darauf.
Die Funktion soll nur ein Ergebnis abliefern aber nie einen Fehler, total transparent, so als ob es Sie nicht gibt.
Forum: Win32/Win64 API (native code)
Delphi
by KodeZwerg,
2. Apr 2018
Vielen Dank! Ich habe nun das Extra StrDispose() und die SetLastError() Aufrufe entfernt.
Forum: Win32/Win64 API (native code)
Delphi
by KodeZwerg,
2. Apr 2018
Könnte man Dein Beispiel auch so abändern oder ginge dabei wieder etwas schief?
function ThousandSeparator : String;
const
Default = ','; // Bei Fehler ein Default Wert nutzen um Meldungen zu überspringen
var
Buffer: PChar;
BufferLen: Integer;
begin
Forum: Win32/Win64 API (native code)
Delphi
by KodeZwerg,
2. Apr 2018
So war mein Ansatz nach Zacherl's erstem Post:
function ThousandSeparator : String;
var
buf: PChar;
begin
Result := ','; // falls was schiefläuft einen default Wert
buf := StrAlloc(10);
if GetLastError() = ERROR_SUCCESS then
Forum: Win32/Win64 API (native code)
Delphi
by KodeZwerg,
2. Apr 2018
Nun aber hoffentlich Ok:
function ThousandSeparator : String;
begin
Result := FormatSettings.ThousandSeparator;
end;
Vielen Dank für so schnelle Hilfe!
Forum: Win32/Win64 API (native code)
Delphi
by KodeZwerg,
2. Apr 2018
Hallo, ich würde mich gerne absichern ob folgender Code korrekt ist:
function ThousandSeparator : String;
var
buf: PChar; // temp puffer
begin
Result := '#'; // falsch initialisieren, gegebenfalls später mit einem Default-Wert bei Fehler ersetzen
try
buf := StrAlloc(10); // puffer eine größe zusichern