Autor Beitrag
Svenkan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55

WinXP
Delphi 7 Enterprise
BeitragVerfasst: Di 21.10.08 15:29 
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:

ausblenden 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
      ///if  ansipos(ansilowercase(fach),ansilowercase(listbox_kurz.Items.Strings[li]))
      ///= 1 then
      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?
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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):
ausblenden 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;
Svenkan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55

WinXP
Delphi 7 Enterprise
BeitragVerfasst: Di 21.10.08 18:54 
Hallo,

mit kleineren Anpassungen hat dies wunderbar geklappt!
Dankeschön! :)