| Autor |
Beitrag |
hibbert
      
Beiträge: 1007
WinServer2003, Win XP, Linux
D6 Pers, D05
|
Verfasst: Mi 26.04.06 15:13
Hi,
ich habe nur eine kleine Frage:
Ich habe 2 Strings, zB. "AAA" und "BBB". Diese vergleiche ich so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure vergleiche; var string1,string2:string; begin string1:='AAA'; string2:='BBB'; if string1 < string2 then showmessage(string1+' kommt vor '+string2) else showmessage(string2+' kommt vor '+string1); end; |
Da wird festgestellt das AAA vor BBB kommt.
Aber hier
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure vergleiche; var string1,string2:string; begin string1:='AAA'; string2:='B'; if string1 < string2 then showmessage(string1+' kommt vor '+string2) else showmessage(string2+' kommt vor '+string1); end; |
wird festgestllt das B vor AAA kommt.
Ich möchte gerne, dass die Strings sozusagen nach Alphabet sortiert werden, bzw. dass ich weiß welcher der beiden Strings vor dem Anderen kommen würde, wenn ich sie Alphabetisch sortieren würde.
thx hibbert
_________________ I kunnen väl svara endast ja eller nej
Om i viljen eller nej
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mi 26.04.06 15:20
Schau dir mal CompareStr oder CompareText an.
_________________ We are, we were and will not be.
|
|
hibbert 
      
Beiträge: 1007
WinServer2003, Win XP, Linux
D6 Pers, D05
|
Verfasst: Mi 26.04.06 17:14
Hi, mhh hat bei mir nicht wirklich Lösung gezeigt...
Aber dafür habe ich jetzt einen Anderen Weg gefunden. (Bei schönem Wetter Spazieren gehen hilft da doch schon weiter  )
Ich stelle das Ganze wie eine Kette vor, gaaaanz links ist A, und gaaanz rechts ist Z.
Dann verwende ich folgendes:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| function nametoleft(name1,name2:string):boolean; var x:integer; begin if length(name1) > length(name2) then name1:=copy(name1,1,length(name2)) else if length(name1) <> length(name2) then name2:=copy(name2,1,length(name1));
if name1 > name2 then result:= true else result:=false; end; |
Dabei muss man beachten, dass die Parameter einheitlich übergeben werden müssen, also zb. Uppercase
Damit müsste ich eigentlich weiter kommen. Wenn aber einer eine noch bessere Lösung hat, immer her damit
hibbert
_________________ I kunnen väl svara endast ja eller nej
Om i viljen eller nej
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mi 26.04.06 17:20
Nur mal so interessehalber: Was funktioniert denn an den beiden Funktionen nicht, die ich angegeben habe?
_________________ We are, we were and will not be.
|
|
starsurfer
      
Beiträge: 334
Win 95, Win 98, Win XP, Win Vista, Linux
D5 Enterprise ,D2005, D6 Personal, Visual C++ Express 2005, C++ Builder 6 E, Dev-C++
|
Verfasst: Mi 26.04.06 17:21
für GANZ faule gibts noch die Möglichkeit:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var sortlist:tstringlist; begin sortlist:=tstringlist.create; sortlist.clear; sortlist.add(stringA); sortlist.add(stringB); sortlist.sort; stringA:=sortlist.string[0]; stringB:=sortlist.string[1]; sortlist.free; end; |
_________________ GEIZ IST GEIL! - Ihr Sozialamt
Zuletzt bearbeitet von starsurfer am Mi 26.04.06 17:24, insgesamt 1-mal bearbeitet
|
|
Martin1966
      
Beiträge: 1068
Win 2000, Win XP
Delphi 7, Delphi 2005
|
Verfasst: Mi 26.04.06 17:22
_________________ Ein Nutzer der Ecke
|
|
hibbert 
      
Beiträge: 1007
WinServer2003, Win XP, Linux
D6 Pers, D05
|
Verfasst: Mi 26.04.06 18:00
Martin1966 hat folgendes geschrieben: |
Bei mir nicht.  |
mhh kann auch sein das es andersrum ist/war. Das Beispiel habe ich nur schnell aus dem Kopf aufgeschrieben... versuch es mal andersrum, wenn das nicht geht, dann sollte die andere Procedure weiterhelfen.
@Gausi:
Wenn ich es richtig verstanden habe, ist string1 vor String2 wenn CompareStr einen Wert < 0 zurück gibt. Und irgendwie wollte das bei mir nicht, habe leider selber keine genaue Ahnung, warum nicht. Ich habe es so versucht:
Delphi-Quelltext 1: 2:
| if CompareStr(String1,string2) < 0 then tausche(string2,string1); |
@starsurfer:
Eine Stringlist hilft mir nicht wirklich weiter, da ich Strings aus einem Record vergleichen muss und ich irgendwie die anderen Daten aus dem Record mit verschieben muss, aber trotzdem danke
hibbert
_________________ I kunnen väl svara endast ja eller nej
Om i viljen eller nej
|
|
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: Mi 26.04.06 19:15
hibbert hat folgendes geschrieben: |
@Gausi:
Wenn ich es richtig verstanden habe, ist string1 vor String2 wenn CompareStr einen Wert < 0 zurück gibt. Und irgendwie wollte das bei mir nicht, habe leider selber keine genaue Ahnung, warum nicht. Ich habe es so versucht:
Delphi-Quelltext 1: 2:
| if CompareStr(String1,string2) < 0 then tausche(string2,string1); |
|
Auch wenn ich nicht Gausi bin:
CompareStr beachtet die Groß-/Kleinschreibung. Wie Gausi schon gesagt hatte, solltest du, wenn du das nicht möchtest, CompareText benutzen.
Ansonsten stimmt es, sofern tausche richtig funktionert.
Viele Grüße,
Hape
_________________ Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
|
|
|