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?