AGB  ·  Datenschutz  ·  Impressum  







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

TCHeckListBox:Sort sortiert anders als ich

Ein Thema von TurboMagic · begonnen am 1. Nov 2022 · letzter Beitrag vom 1. Nov 2022
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#1

TCHeckListBox:Sort sortiert anders als ich

  Alt 1. Nov 2022, 15:14
Hallo,

gegeben ist folgendes:

D11.2, VCL Anwendung mit eienr TCheckListBox.
Außerdem eine generische TObjectList, deren Einträge u.a. ein Dateinamensfeld (string) haben.
Die in dieser Liste gespeicherten Einträge werden über eine Methode der CheckListBox.Items
Eigenschaft zugewiesen (diese wird vorher geleert).

Außerdem wurde für die generische Liste eine Sortierung anhand des Dateinamens umgesetzt.
Zum Vergleich der Strings wird CompareStr genutzt. Vermutlich liegt da auch der Hund begraben.

In den Pfad/Dateinamen gibt's u.a. solche:
[..]\Source\AddSomething.pas
[..]\Source\fWizard.pas
[..]\Source\__recovery\AddSomething.pas

Das Sort der TObjectList sortiert die jetzt so:
[..]\Source\AddSomething.pas
[..]\Source\__recovery\AddSomething.pas
[..]\Source\fWizard.pas

weil im ASCII Zeichensatz _ zwischen den großen und kleinen Buchstaben kommt.

Wenn CheckListBox.Sorted true ist, wird dort drin aber so sortiert:
[..]\Source\__recovery\AddSomething.pas
[..]\Source\AddSomething.pas
[..]\Source\fWizard.pas

Wie bekomme ich die selbe Sortierung auch in der TObjectList hin ohne
im Comparer immer .ToUpper oder .ToLower aufrufen zu müssen?

Und: was ist der Unterschied zwischen CompareStr und CompareText?
Auf den ersten Blick auf die Hilfethemen beider sah' ich noch keinen...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#2

AW: TCHeckListBox:Sort sortiert anders als ich

  Alt 1. Nov 2022, 15:38
Aus System.SysUtils:
Delphi-Quellcode:
{ CompareText compares S1 to S2, without case-sensitivity. The return value
  is the same as for CompareStr. The compare operation is based on the 8-bit
  ordinal value of each character, after converting 'a'..'z' to 'A'..'Z',
  and is not affected by the current user locale. }
"without case-sensitivity", hier ist die Doku also wohl schlicht falsch. Du kannst ja gerne einen QC-Eintrag machen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TCHeckListBox:Sort sortiert anders als ich

  Alt 1. Nov 2022, 15:47
Wie immer
SameStr SameText
CompareStr CompareText
AnsiSameStr AnsiSameText
AnsiCompareStr AnsiCompareText
...


bei Einigen wird ohne "Ansi" es als ASCII (7 Bit) im Pascal verglichen
oder wenn Mit eben mit ANSI/Unicode-Codepage

Str = case-sensitiv
Text = case-insensitiv
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 1. Nov 2022 um 15:50 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#4

AW: TCHeckListBox:Sort sortiert anders als ich

  Alt 1. Nov 2022, 15:49
Ah! Lesen sollte man können. Die Doku ist schon richtig. Bei CompareStr mit Berücksichtigung, bei CompareText ohne.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#5

AW: TCHeckListBox:Sort sortiert anders als ich

  Alt 1. Nov 2022, 15:53
Danke! Habe eben schon CompareText ausprobiert und das tut, was ich will.
  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 06:19 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