![]() |
Seltsames Verhalten bei Stringvergleich
Hi,
aus einer ObjectList möchte ich ein bestimmtes Object anhand einer Property finde. Dafür diese Routine:
Delphi-Quellcode:
(die DoWriteLog's sind nur für die Fehlersuche drin).
function TMSNList.IndexOfMSN(value: string): Integer;
var i: Integer; begin Result:=-1; for i:=0 to self.Count-1 do begin DoWriteLog('Value: '+QuotedStr(value)+' Self['+IntToStr(i)+'].MSN: '+QuotedStr(self[i].MSN)); if self[i].MSN=value then begin DoWriteLog('--Match'); Result:=i; Break; end else DoWriteLog('--NoMatch'); end; end; Als Log bekomme ich das:
Code:
Wie man sehr schön sehen kann, ist beim Index 1 der String gleich, wird aber nicht als gleich in der Routine erkannt.
21.11.2017 19:07:05,540 : MSNlog: Value: '25' Self[0].MSN: '60'
21.11.2017 19:07:05,540 : MSNlog: --NoMatch 21.11.2017 19:07:05,540 : MSNlog: Value: '25' Self[1].MSN: '25' 21.11.2017 19:07:05,540 : MSNlog: --NoMatch Beide sind vom Typ String. Vergleicht man strings neuerdings anders? Interessant ist, dass es auf meiner Win10-Maschine läuft, aber auf einem Win2012- und einem Win2008-Server (auf denen ich das jetzt getestet habe) nicht. |
AW: Seltsames Verhalten bei Stringvergleich
Was ist denn das für ein Zeichen vor der 25 bei value?
|
AW: Seltsames Verhalten bei Stringvergleich
Zitat:
So sieht das aus wenn ich Den Text nach Notepad kopiere: 21.11.2017 19:07:05,540 : MSNlog: Value: 'x8125' Self[1].MSN: '25' |
AW: Seltsames Verhalten bei Stringvergleich
Ah, danke. Ich habe mir das immer in Notepad angeschaut. Hätte mal lieber Notepad++ nehmen sollen. Jetzt sehe ich das auch.
Vielen Dank. |
AW: Seltsames Verhalten bei Stringvergleich
Bezüglich Logging könntest du dir überlegen dafür eine Übersetzung mit einzubauen.
Also entweder auch
Delphi-Quellcode:
und da das durch Char durch eine Zeichenfolge ala
if C in [0..31] then
Delphi-Quellcode:
.
\x12
Im Unicode gibt es für viele Steuerzeichen auch "sichtbare" Ersatzzeichen. z.B. ![]() > Scripts > Latin > Basic Latin (ASCII) > Symbols and Punctuation > Technical Symbols > Control Pictures $0000-$001F + $2400 = $2400-$241F |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 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 by Thomas Breitkreuz