GetSystemDefaultLangID_()-Rückgabe falsch
Verfasst: 18.08.2013 15:40
Bevor ich wieder fleißig und falsch ins Bug-Forum poste und eins auf die Mütze bekomme... 
Wenn ich mit PB5.20b10(x86/x64) die folgenden Codes kompiliere (durch CompilerSelect getrennte Umformungen), dann ist immer der GetSystemDefaultLangID_()-Rückgabewert jeweils ab dem zweiten Aufruf falsch. Genauer: Byte 0 und Byte 1 sind richtig und Byte 2 enthält bei jeder Kompilierung einen anderen Wert; dann aber immer pro Aufruf mit falscher Rückgabe den selben Wert.
Daher fogenden Fragen:
Wenn ich mit PB5.20b10(x86/x64) die folgenden Codes kompiliere (durch CompilerSelect getrennte Umformungen), dann ist immer der GetSystemDefaultLangID_()-Rückgabewert jeweils ab dem zweiten Aufruf falsch. Genauer: Byte 0 und Byte 1 sind richtig und Byte 2 enthält bei jeder Kompilierung einen anderen Wert; dann aber immer pro Aufruf mit falscher Rückgabe den selben Wert.
Daher fogenden Fragen:
- Woher kommt Byte 2, wenn der Rückgabewert nur ein Word ist?
- Wieso taucht dieses Problem bei ähnlichen Funktionen wie z.B. GetUserDefaultLangID_() nicht auf?
- In Bezug auf 2., warum ändert sich durch manuellen Import nichts an dem Problem?
Code: Alles auswählen
CompilerSelect 1 ; 1 bis 5 (div. Code-Umformungen)
CompilerCase 1
Debug Str($FFFF) + " (max unsigned Word)"
Debug GetSystemDefaultLangID_()
Debug GetSystemDefaultLangID_()
Debug GetSystemDefaultLangID_()
Debug GetSystemDefaultLangID_()
CompilerCase 2
Debug Str($FFFF) + " (max unsigned Word)"
n = GetSystemDefaultLangID_() : Debug n
n = GetSystemDefaultLangID_() : Debug n
n = GetSystemDefaultLangID_() : Debug n
n = GetSystemDefaultLangID_() : Debug n
CompilerCase 3
Import "kernel32.lib"
GetSystemDefaultLangID.u()
EndImport
Debug Str($FFFF) + " (max unsigned Word)"
Debug GetSystemDefaultLangID()
Debug GetSystemDefaultLangID()
Debug GetSystemDefaultLangID()
Debug GetSystemDefaultLangID()
CompilerCase 4
Import "kernel32.lib"
GetSystemDefaultLangID.w()
EndImport
Debug Str($FFFF) + " (max unsigned Word)"
Debug GetSystemDefaultLangID()
Debug GetSystemDefaultLangID()
Debug GetSystemDefaultLangID()
Debug GetSystemDefaultLangID()
CompilerCase 5
Import "kernel32.lib"
CompilerIf SizeOf(Integer) = SizeOf(Quad)
GetSystemDefaultLangID.u() As "GetSystemDefaultLangID"
CompilerElse
GetSystemDefaultLangID.u() As "_GetSystemDefaultLangID@0"
CompilerEndIf
EndImport
Debug Str($FFFF) + " (max unsigned Word)"
Debug GetSystemDefaultLangID()
Debug GetSystemDefaultLangID()
Debug GetSystemDefaultLangID()
Debug GetSystemDefaultLangID()
CompilerEndSelect