Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Kombinationen von Strings (https://www.delphipraxis.net/165967-kombinationen-von-strings.html)

papax 24. Jan 2012 10:33

Kombinationen von Strings
 
Hallo,

ich habe ein kleines Problem und komme nicht Ansatzweise auf eine Lösung.

Ich habe eine beliebige Anzahl von TStringListen in denen diverse Werte stehen.

z.B.

StringListe1 =
Rot
Blau
Grün

StringListe2 =
L
XL
XXL

StringListe3 =
100
200
300

Alle StringListen sind als Objekt in einer weiteren StringListe die ich hier mal OBJ nenne.

Nun muss ich folgendes Bewerkstelligen:

Ich benötige Variationen alle Werte in einem String, z.B.

Rot,L,100
Rot,L,200
Rot,L,300
Rot,XL,100
Rot,XL,200

usw.

Ich muss also in allen möglichen Kombinationen die Listen durchlaufen und das Ergebnis beinhaltet diese Variationen.

Mir fehlt jedoch bereits der Denkansatz. Gelesen habe ich hier über Permutationen , aber diese wüfeln auch die Listeneinträge selbst.

Ich würde mich über ein paar Denkanstöße freuen.

DeddyH 24. Jan 2012 10:38

AW: Kombinationen von Strings
 
Hallo und Willkommen in der DP :dp:,

könnte man das Problem nicht einfach mit 3 verschachtelten Schleifen lösen?

haentschman 24. Jan 2012 10:39

AW: Kombinationen von Strings
 
Moin... :hi:

Stichwort: 3 ineinander verschachtelte Schleifen.

:twisted: der schon wieder... :stupid:

Klaus01 24. Jan 2012 10:39

AW: Kombinationen von Strings
 
Hallo,

sollte das Thema nicht mit drei geschachtelten For Schleifen zu erschlagen sein?

Delphi-Quellcode:
for i:=0 to StringList1.count -1 do
  for j:=0 to StringList2.count -1 do
    for k:=0 to StringList3.count -1 do
      begin
         Memo1.lines.add(format('%s, %s, %s',[stringList1[i],stringList2[j],stringList3[k]]));
      end;
Grüße
Klaus

DeddyH 24. Jan 2012 10:40

AW: Kombinationen von Strings
 
Erster! :tongue: :cheer:

himitsu 24. Jan 2012 10:51

AW: Kombinationen von Strings
 
@Klaus01:
Ab mindestens Delphi 2010 kann man sich auch solch einen Spaß erlauben. (vielleicht auch schon ab 2009/2006/TDE ... da sowas blöder Weise nicht in er OH erwähnt wird, bin ich mir nicht ganz sicher)
Delphi-Quellcode:
for S1 in StringList1 do
  for S2 in StringList2 do
    for S3 in StringList3 do
       Memo1.Lines.Add(Format('%s,%s,%s', [S1, S2, S3]));
Aber bei den 3 Schleifchen bleibt es dennoch.

papax 24. Jan 2012 10:56

AW: Kombinationen von Strings
 
ICH LIEBE EUCH!
:) Vielen Dank für die vielen und schnellen Antworten.

haentschman 24. Jan 2012 10:57

AW: Kombinationen von Strings
 
Delphi-Quellcode:
for S1 in StringList1 do
...echt sowas geht ? Muß ich mal ausprobieren...

Nersgatt 24. Jan 2012 11:53

AW: Kombinationen von Strings
 
Zitat:

Zitat von haentschman (Beitrag 1147368)
Delphi-Quellcode:
for S1 in StringList1 do
...echt sowas geht ? Muß ich mal ausprobieren...

In Verbindung mit Generics finde ich das noch viel spannender:

Delphi-Quellcode:
  TAuto = class
    public
      Marke : string;
      Typ : string;
      Farbe : String;
  end;
  TGarage = TList<TAuto>;
...
Delphi-Quellcode:
  MeineGarage := TGarage.Create;
  try
    auto := TAuto.Create;
    auto.Marke := 'Porsche';
    auto.Typ := '911';
    Auto.Farbe := 'Blau';

    MeineGarage.Add(Auto);

    for auto in MeineGarage do
      ShowMessage(auto.Marke);

  finally
    MeineGarage.Free;
  end;

himitsu 24. Jan 2012 12:06

AW: Kombinationen von Strings
 
Für TStrings und Nachfahren existiert standardmäßig schon ein Enumerator.
Delphi-Quellcode:
  TStringsEnumerator = class
  private
    FIndex: Integer;
    FStrings: TStrings;
  public
    constructor Create(AStrings: TStrings);
    function GetCurrent: string; inline;
    function MoveNext: Boolean;
    property Current: string read GetCurrent;
  end;

  TStrings = class(TPersistent)
  public
    ...
    function GetEnumerator: TStringsEnumerator;
    ...
  end;
Bei Arrays und für einige andere Listen (z.B. TList oder TComponent) gibt es auch sowas.
Für eigene Klassen kann man Diesen selber nachrüsten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:07 Uhr.
Seite 1 von 2  1 2      

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