Svenkan - Di 21.10.08 15:29
Titel: 2 Strings (1 aus Listbox) miteinander vergleichen
Hallo, folgendes Problem: ich habe eine Listbox 'listbox_kurz' und eine Stringvariable 'fach', welche ich miteinander "vergleichen" will. Der Hintergrund ist der, dass ich die jeweilige Position, z.B. von 'En', in der o.g. Listbox benötige, um diesen String in meinen Plänen mit dem passenden Äquivalent aus der Listbox 'listbox_lang' zu ersetzen. Lange Rede, kurzer Sinn, hier ist mein Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| function FachLang(memo: TMemo;fach: String; erlaubt: Boolean; listbox_kurz,listbox_lang: TListBox): String; var li, str_laenge: Integer; fach_liste: String; begin if erlaubt then begin str_laenge := Length(fach); for li := 0 to listbox_kurz.Count -1 do begin fach_liste:=listbox_kurz.Items.Strings[li]; SetLength(fach_liste,str_laenge); if (fach=fach_liste) then Result:=listbox_lang.Items.Strings[li];
memo.Lines.Add(ansilowercase(fach)+'='+ansilowercase(fach_liste)); end end else Result := fach; end; |
'erlaubt' gibt an, ob diese Funktion vom User gewünscht wurde oder nicht.
Das Problem ist, dass ich z.B. bei 2 Einträgen in der 'listbox_kurz', welche gleich anfangen, immer falsche Resultate bekomme (z.B. bei 'Ma' (Mathe) und 'MaHbF' (Mathe HbF) bekomme ich immer 'Mathe HbF' ausgegeben!) und das ist natürlich nicht Sinn der Sache. Hat hierzu jemand eine Idee?
Delete - Di 21.10.08 15:42
Die ItemIndizes der beiden Listboxen sind aber gleich, wenn ich das richtig verstehe?
Dann würde ich es mal so versuchen (Achtung: aus dem Kopf getippt):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| function FachLang(memo: TMemo;fach: String; erlaubt: Boolean; listbox_kurz,listbox_lang: TListBox): String; var fach_lang: string; iIndex: integer; begin Result := fach; if erlaubt then begin iIndex := listbox_kurz.Items.IndexOf(fach); if (iIndex > -1) and (listbox_lang.Items.Count > iIndex) then Result := listbox_lang.Items[iIndex]; end; end; |