AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

tstringlist probleme mit find/indexof..

Ein Thema von agm65 · begonnen am 15. Sep 2006 · letzter Beitrag vom 15. Sep 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von agm65
agm65

Registriert seit: 21. Okt 2003
1.194 Beiträge
 
Delphi 2006 Professional
 
#11

Re: tstringlist probleme mit find/indexof..

  Alt 15. Sep 2006, 15:03
Delphi-Quellcode:
IF VehicleTypeKey.IndexOf('pkw') <> -1 then
begin
fmaddcars.cbFahrzeugart.Items.Add(VehicleTypeDe.Strings[VehicleTypeKey.IndexOf('pkw')]);
end;
das würde gehen aber ich nur einen eintrag, klar weil ich keinen loop habe

aber wie kann ich sagen, loop mir solange wie ich den eintrag pkw habe ?
euer Peter Porka
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#12

Re: tstringlist probleme mit find/indexof..

  Alt 15. Sep 2006, 17:00
Ist dir bewusst, dass IndexOf case-sensitiv sucht und somit keinen "Audi" in der StringListe findet, obwohl ein "audi" in dieser enthalten ist?
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#13

Re: tstringlist probleme mit find/indexof..

  Alt 15. Sep 2006, 17:07
den Eintrag 'pkw' wirst Du über .find finden:

Siehe mal in die Hilfe:
Delphi-Quellcode:
Zu diesem Beispiel gehören eine Liste und eine Beschriftung (Label). Nach dem Start der Anwendung wird eine Stringliste erzeugt und mit drei Strings gefüllt. Die Methode Find durchsucht die Strings nach dem Vorkommen des Strings 'Blumen'. Wenn dieser String gefunden werden kann, wird die komplette Stringliste in das Listenfeld eingefügt, und der Indexwert von 'Blumen' erscheint als Beschriftungstext.

procedure TForm1.FormCreate(Sender: TObject);

var
  MyList: TStringList;
  Index: Integer;
begin
  MyList := TStringList.Create;
  try
    MyList.Add('Animals');
    MyList.Add('Flowers');

    MyList.Add('Cars');

    MyList.Sort; { Find funktioniert nur für sortierte Listen! }
    if MyList.Find('Flowers', Index) then
    begin
      ListBox1.Items.AddStrings(MyList);
      Label1.Caption := 'Flowers has an index value of ' + IntToStr(Index);
    end;
  finally
    MyList.Free;
  end;
end;
Insbesondere der Abschnitt ist für Dich interessant:
Delphi-Quellcode:
    MyList.Sort; { Find funktioniert nur für sortierte Listen! }
    if MyList.Find('Flowers', Index) then
    begin
      ListBox1.Items.AddStrings(MyList);
      Label1.Caption := 'Flowers has an index value of ' + IntToStr(Index);
    end;
Jetzt müsstet Du es aber schaffen...
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#14

Re: tstringlist probleme mit find/indexof..

  Alt 15. Sep 2006, 17:27
wenn es eine stringliste ist kann man auch alternativ
die liste auf sorted stellen, dann dublicates auf delete setzen.
dann immer einträge hinzufügen. doppelte werden weggeworfen.

Delphi-Quellcode:
  sl.Sorted:=true;
  sl.Duplicates:=dupIgnore;
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#15

Re: tstringlist probleme mit find/indexof..

  Alt 15. Sep 2006, 17:27
Hi,
warum genau scheidet denn der von Heiko gepostete Weg aus?
Ich denke der ist für dich hier immer noch der geeignetste. Zwei verschiedene Listen über den Index konsistent zu halten ist keine schöne Möglichkeit.
Um nochmal auf den Weg von Hoika zurückzukommen:
Du erstellst dir eine eigene Klasse und arbeitest mit einer TObjectList. Deine Klasse kapselt dabei alle Eigenschaften des Fahrzeugs, die TObjectList kann dann die einzelnen Instanzen speichern.

Delphi-Quellcode:
type
  TAutor = class(TObject)
    private
      FVehicleTypeDe : String;
      FVehicleTypeKey : String;
    protected
      procedure setVehicleTypeDe(const VehicleTypeDe : String);
      procedure setVehicleTypeKey(const VehicleTypeKey : String);
    public
      constructor create(const VehicleTypeDe, VehicleTypeDe : String);

      property VehicleTypeDe : String read FVehicleTypeDe write setVehicleTypeDe;
      property VehicleTypeKey : String read FVehicleTypeKey write setVehicleTypeKey;
  end;

...

constructor TAuto.create(const VehicleTypeDe, VehicleTypeDe : String);
begin
  self.VehicleTypeDe := VehicleTypeDe;
  self.VehicleTypeKey := VehicleTypeKey;
end;

procedure TAuto.setVehicleTypeDe(const VehicleTypeDe : String);
begin
  self.FVehicleTypeDe := VehicleTypeDe;
end;

procedure TAuto.setVehicleTypeKey(const VehicleTypeKey : String);
begin
  self.FVehicleTypeKey := VehicleTypeKey;
end;
Ok, das wäre nur das Beispiel wie deine Auto Klasse aussehen könnte. Wie man eine Instanz der Klasse erzeugt denke ich ist dir klar. Alle Autos die du erzeugst speicherst du einfach in einer TObjectList. Möchtest du nun aus dieser TObjectlist alle Autos, die ein PKW sind, dann kannst du das einfach so machen:

Delphi-Quellcode:
procedure PkwsToCombobox(const ComboBox : TComboBox; const List : TObjectList);
var i : Integer;
begin
  if List.Count > 0 then
  begin
    for i := 0 to List.Count - 1 do
    begin
      if TAuto(List[i]).VehicleTypeKey = 'pkwthen
      begin
        ComboBox.Items.Add(TAuto(List[i]).VehicleTypeDe;
      end; // if TAuto(List[i]).VehicleTypeKey = 'pkw'
    end; // for i := 0 to List.Count - 1
  end; // if List.Count > 0
end;
Schöner ist es allerdings, wenn du den TypeKey durch etwas anderes als einen String ersetzt. Du kannst z.B. einen eigenen Typen einführen:
Delphi-Quellcode:
type
  TypeKey = (tkPkw, tkLwk, tkMotorad, ...);
Dann kommt es einfach nicht mehr auf Groß- und Kleinschreibung an und du es entfällt auch der Overhead der Arbeit mit Strings.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz