Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem beim Ersetzen von Inhalten mit 2 Listboxen (https://www.delphipraxis.net/122604-problem-beim-ersetzen-von-inhalten-mit-2-listboxen.html)

Svenkan 19. Okt 2008 02:41


Problem beim Ersetzen von Inhalten mit 2 Listboxen
 
Hallo!
Folgendes Problem: Ich möchte einen bestimmten Inhalt durch den aus einer Listbox ersetzen. Dazu verwende ich folgende Funktion:


Delphi-Quellcode:
function FachLang(fach: String; erlaubt: Boolean; listbox_kurz,listbox_lang: TListBox): String;
var li: Integer;
begin
  if erlaubt then begin
    for li := 0 to listbox_kurz.Count -1 do
      if ansipos(ansilowercase(fach),ansilowercase(listbox_kurz.Items.Strings[li]))
      = 1 then
        Result:=listbox_lang.Items.Strings[li];
  end
  else
    Result := fach;
end;

Diese funktioniert soweit auch. Wenn ich allerdings 2 Einträge habe, die bis dahin mit den gleichen Zeichen beginnen, bekomme ich das jeweils letzte Ergebnis ausgegeben.

Beispiel: Ich möchte das Schulfach 'De' durch 'Deutsch' ersetzen, habe aber auch das Fach 'DeHbF', welches durch 'Deutsch (Hbf)' ersetzt werden soll. Nun bekomme ich bei 'De' bereits den Ersatz 'Deutsch (HbF)' ausgegeben.

DeddyH 19. Okt 2008 11:54

Re: Problem beim Ersetzen von Inhalten mit 2 Listboxen
 
Dann vergleiche doch den kompletten String.

Svenkan 20. Okt 2008 00:12

Re: Problem beim Ersetzen von Inhalten mit 2 Listboxen
 
Kann sein, dass es grad ein bisschen spät ist, aber das hier gibt mir den gleichen Fehler aus (hab das wegen der Uhrzeit auch nur schnell zur Probe zusammengebastelt!):

Delphi-Quellcode:
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;


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz