AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Seltsames Verhalten bei Stringvergleich

Ein Thema von Hobbycoder · begonnen am 21. Nov 2017 · letzter Beitrag vom 27. Nov 2017
Antwort Antwort
Hobbycoder

Registriert seit: 22. Feb 2017
955 Beiträge
 
#1

Seltsames Verhalten bei Stringvergleich

  Alt 21. Nov 2017, 19:25
Hi,

aus einer ObjectList möchte ich ein bestimmtes Object anhand einer Property finde. Dafür diese Routine:
Delphi-Quellcode:
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;
(die DoWriteLog's sind nur für die Fehlersuche drin).

Als Log bekomme ich das:
Code:
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
Wie man sehr schön sehen kann, ist beim Index 1 der String gleich, wird aber nicht als gleich in der Routine erkannt.
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.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#2

AW: Seltsames Verhalten bei Stringvergleich

  Alt 21. Nov 2017, 19:35
Was ist denn das für ein Zeichen vor der 25 bei value?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Seltsames Verhalten bei Stringvergleich

  Alt 21. Nov 2017, 21:38
Was ist denn das für ein Zeichen vor der 25 bei value?
Da gebe ich Dir recht
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'
Fritz Westermann
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
955 Beiträge
 
#4

AW: Seltsames Verhalten bei Stringvergleich

  Alt 23. Nov 2017, 08:25
Ah, danke. Ich habe mir das immer in Notepad angeschaut. Hätte mal lieber Notepad++ nehmen sollen. Jetzt sehe ich das auch.
Vielen Dank.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.080 Beiträge
 
Delphi 12 Athens
 
#5

AW: Seltsames Verhalten bei Stringvergleich

  Alt 27. Nov 2017, 16:25
Bezüglich Logging könntest du dir überlegen dafür eine Übersetzung mit einzubauen.

Also entweder auch if C in [0..31] then und da das durch Char durch eine Zeichenfolge ala \x12 .

Im Unicode gibt es für viele Steuerzeichen auch "sichtbare" Ersatzzeichen.
z.B. http://www.unicode.org/charts/
> Scripts > Latin > Basic Latin (ASCII)
> Symbols and Punctuation > Technical Symbols > Control Pictures
$0000-$001F + $2400 = $2400-$241F
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (27. Nov 2017 um 16:34 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz