![]() |
Re: Probleme mit TStrings.IndexOfName unter Vista
Zitat:
Damit wäre ja der erste TNT-Fork da ;-) |
Re: Probleme mit TStrings.IndexOfName unter Vista
Zitat:
|
Re: Probleme mit TStrings.IndexOfName unter Vista
wir nutzen keine DLL's, von daher...
|
Re: Probleme mit TStrings.IndexOfName unter Vista
Zitat:
Der Fehler das Problem kann ja durch unerwartete Daten auf API-Ebene schon auftreten. Und irgendwelche (System-)DLL's läd auch ein Hello-World-Programm. |
Re: Probleme mit TStrings.IndexOfName unter Vista
Also heisst das was? API-Hook?
|
Re: Probleme mit TStrings.IndexOfName unter Vista
Zitat:
|
Re: Probleme mit TStrings.IndexOfName unter Vista
Ja sicher, die Funktion CompareString in kernel32.dll. Ob mir da MS einen Patch macht? :gruebel:
Ansonsten nutzen wir zwangsweise nur System-Dlls. Eigentlich müsste es ja ausreichen, den Einsprungscode in Delphi umzubiegen. Ich möchte ja nur, das WideSameText und WideSameStr (TStringList) wieder richtig arbeiten. Was ein CompareString-Aufruf in irgend einer gelinkten dll zurück bekommt, ist mir eigentlich relativ Schnitte. Betrifft schlimmstenfalls irgend eine GUI-Komponente, aber das ist zu verkraften. |
Re: Probleme mit TStrings.IndexOfName unter Vista
Hallo,
den eigentlichen "Fehler" haben leider die VCL-Macher verbrochen. Sie hätten, auch nach dem seinerzeit aktuellen PSDK, einen eigenen Aufruf von CompareString() mit LOCALE_INVARIANT verwenden müssen, anstatt auf ihre lokalisierte Funktion AnsiSameText() zurückzugreifen. Das Thema gehört jetzt wohl nach Delphi-Bugs ... Grüße vom marabu |
Re: Probleme mit TStrings.IndexOfName unter Vista
Hast Du mal eben den Wert von LOCALE_INVARIANT bei der Hand? Bin grad unter XP und hab da das SDK nicht drauf.
Wieso muss ich immer der Erste sein, bei dem so was passiert. |
Re: Probleme mit TStrings.IndexOfName unter Vista
Zitat:
is ja gar keine Konstante. wird mit (MAKELCID(MAKELANGID(LANG_INVARIANT, SUBLANG_NEUTRAL), SORT_DEFAULT)) erzeugt. ![]() //EDIT Aber leider bringt das nicht wirklich was - immer noch falsch:
Delphi-Quellcode:
function MAKELCID(LangId, SortId: WORD): DWORD;
begin Result := (DWORD(SortId) shl 16) or DWORD(LangId); end; function MAKELANGID(PrimaryLang, SubLang: Word): WORD; begin Result := (SubLang shl 10) or PrimaryLang; end; procedure TForm1.TntButton3Click(Sender: TObject); const NORM_LINGUISTIC_CASING = $08000000; LINGUISTIC_IGNORECASE = $10; LANG_INVARIANT = $7F; begin if (CompareStringW((MAKELCID(MAKELANGID(LANG_INVARIANT, SUBLANG_NEUTRAL), SORT_DEFAULT)), 0, 'HÜBNER', Length('HÜBNER'), 'HUEBNER', Length('HUEBNER')) - 2) = 0 then ShowMessage('Fehler'); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz