Daten aus abhängigen Listboxen ausgeben

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Varus
Beiträge: 19
Registriert: Fr 29. Nov 2013, 15:03

Daten aus abhängigen Listboxen ausgeben

Beitrag von Varus »

Hallo mal wieder,
und zwar habe ich 2 Listboxen für die Eingabe von Daten. Und in einer weiteren kommt das entsprechende Ergebnis raus. Nun könnte ich das so Programmmieren:

Code: Alles auswählen

 
        if (Listbox2.ItemIndex=0) and (Listbox8.Itemindex=0) //Listbox2=Variable 1 und Listbox8=Variable3 und Listbox3=Ergebnis
        then Listbox3.Items.LoadFromFile('A.txt');
 
        if (Listbox2.ItemIndex=1) and (Listbox8.Itemindex=0)
        then Listbox3.Items.LoadFromFile('A#.txt');
 
        if (Listbox2.ItemIndex=2) and (Listbox8.Itemindex=0)
        then Listbox3.Items.LoadFromFile('B.txt');
 
        if (Listbox2.ItemIndex=3) and (Listbox8.Itemindex=0)
        then Listbox3.Items.LoadFromFile('C.txt');
        ...
 
Das heißt alle Daten einzeln reinschreiben was jede Menge tipparbeit bedeuten würde. Oder evtl. mit einer Schleife?! Habe das schon probiert allerdings klappt das nicht wirklich. Und das Problem ist dass ich die Daten gerne aus einer txt (im optimalfall aus einer Excel Tabelle) entnehmen möchte, aber ich nicht richtig weiß wie ich diese mit einer schleife mitzählen lassen kann? Habt ihr eine Idee? Oder ist das überhaupt machbar?

Ich danke euch!
Gruß Varus

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: Daten aus abhängigen Listboxen ausgeben

Beitrag von wp_xyz »

Oder ist das überhaupt machbar?
Alles ist machbar...

Ich weiß natürlich nicht, ob ich dich richtig verstehe, aber anscheinend möchtest du für jede Kombination der gewählten Einträge der beiden Listboxen eine andere Datei laden. Für den flexibelsten Fall könntest du z.B. die Dateinamen in eine Text-Datei schreiben: die erste Zeile enthält die Dateinamen (z.B. durch ";" getrennt) für die zweite Listbox, wenn in der 1. Listbox der 1.Eintrag gewählt ist, die zweite Zeile die Dateinamen, wenn der 2.Eintrag gewählt ist. Etwa so

Code: Alles auswählen

 
"A1.txt";"B1.txt"; "C1.txt"  // in der 1. Listbox ist der 1. Eintrag gewählt
"A2.txt";"B2.txt"; "C2.txt"  // in der 1. Listbix ist der 2. Eintrag gewählt
...
 
Diese Datei lädst du in eine Stringliste, jeden String kannst du wieder am Trennzeichen auftrennen.

Code: Alles auswählen

 
var
  DateiListe, ZeilenListe: TStringList;
  Dateiname: String;
begin
  DateiListe := TStringList.Create;
  ZeilenList := TStringList.Create;
  try
    DateiListe.LoadFromFile(<... dateiname ...>);
    ZeilenListe.Delimiter := ';';  // Das ist das Trennzeichen innerhalb einer Zeile
    Zeilenliste.Text := DateiListe[Listbox2.ItemIndex];  // Listbox2 wählt die Zeile in der Datei
    Dateiname := ZeilenListe[Listbox8.ItemIndex];  // Listbox8 wählt den Dateinamen in der Zeile
    Listbox3.Items.LoadFromFile(Dateiname);
  finally
    Zeilenliste.Free;
    Dateiliste.Free;
  end;
end;
 
Ein Tipp noch: Gib den Listboxen vernünftige Namen, dann weißt du auch in einem Monat noch, was damit gemeint ist.

Varus
Beiträge: 19
Registriert: Fr 29. Nov 2013, 15:03

Re: Daten aus abhängigen Listboxen ausgeben

Beitrag von Varus »

Hallo,
kam leider noch nicht früher dazu es auszuprobieren.

Verstehe ich den Ablauf nun richtig das sich das Programm den Namen aus einer TXT Datei entnimmt welches aus dem Ergebnisses aus Listbox8 und Listbox2, zb. A1. etc., besteht. Also ja eigentlich wirds ja dann in "Zeilen" und "Spalten" abgezählt. Wie du schon beschrieben hast:

Code: Alles auswählen

 
"A1.txt";"B1.txt"; "C1.txt"  // in der 1. Listbox ist der 1. Eintrag gewählt
"A2.txt";"B2.txt"; "C2.txt"  // in der 1. Listbix ist der 2. Eintrag gewählt...
 
Und dann noch jeweils für jedes Ergebnis eine entsprechende TXT Datei die aus dem Namen des Ergebinsses aus Listbox8 und Listbox2 besteht und deren Inhalt für die Ausgabe in Listbox3 enthält. Die dann im Programm die "Variable" "Dateinamen" ersetzt?!

Gruß Varus

Varus
Beiträge: 19
Registriert: Fr 29. Nov 2013, 15:03

Re: Daten aus abhängigen Listboxen ausgeben

Beitrag von Varus »

Hallo,

also ich habe jetzt mal bisschen probiert aber so richtig funktioniert das nicht. Ich habe nun eine TXT datei erstellt die ich "chords" genannt habe. Dort habe ich die entsprechenden Dateinamen eingetragen.

Code: Alles auswählen

 "A1.txt";"B1.txt"; "C1.txt"  // in der 1. Listbox ist der 1. Eintrag gewählt"A2.txt";"B2.txt"; "C2.txt"  // in der 1. Listbix ist der 2. Eintrag gewählt... 
 
Nun habe ich weitere TXT dateinamen erstellt und die dann zb. "A1.txt" und "B1.txt"... genannt. Nun das funktioniert soweit solange ich in der Chords.txt pro Zeile nur einen Eintrag pro Zeile habe. Sprich:

Code: Alles auswählen

 
A1.txt
B1.txt 
C1.txt  
 
Dann lädt er die entsprechende Datei. Allerdings wenn ich nun mehrere Dateinamen in einer Zeile eintrage und durch ein Zeichen wie ";" trenne sagt er mir "Unable to open file "A1.txt;B1.txt;C1.txt"..."


Ich vermute, dass die Funktion

Code: Alles auswählen

 
ZeilenListe.Delimiter := Chr(59);
 
bzw.

Code: Alles auswählen

 
ZeilenListe.Delimiter := ';';
 
nicht funktioniert!?
Ist da ein "Schreibfehler"?

Hier mein Aktueller Quellcode:

Code: Alles auswählen

 
Var
   DateiListe, ZeilenListe: TStringList;
   Dateiname:               String;
begin
 
   DateiListe := TStringList.Create;
   ZeilenListe := TStringList.Create;
 
    try
 
           DateiListe.LoadFromFile('chords.txt');
           Zeilenliste.Text := DateiListe[Listbox2.ItemIndex];  // Listbox2 wählt die Zeile in der Datei
           ZeilenListe.Delimiter := Chr(59); // Das ist das Trennzeichen innerhalb einer Zeile
           Dateiname := ZeilenListe[Listbox8.ItemIndex];  // Listbox8 wählt den Dateinamen in der Zeile
           Listbox3.Items.LoadFromFile(Dateiname);
    finally
           Zeilenliste.Free;
           Dateiliste.Free;
end;
 
  end;                             
 
Ich danke gruß Varus!

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Daten aus abhängigen Listboxen ausgeben

Beitrag von baumina »

Irgendwie würde ich instinktiv erst den Delimiter und dann erst den Text zuweisen, aber obs hilft kann ich dir nicht sagen.
.

Varus
Beiträge: 19
Registriert: Fr 29. Nov 2013, 15:03

Re: Daten aus abhängigen Listboxen ausgeben

Beitrag von Varus »

Das habe ich auch schon probiert. Aber der Fehler bleibt der gleiche :|

Kann es vielleicht sein dass ich in der Chords.txt noch irgenwelche sonderzeichen anfügen muss wie ein hochkomma '
Zb:
'A1.txt';'B1.txt';

Gruß

Benutzeravatar
theo
Beiträge: 10873
Registriert: Mo 11. Sep 2006, 19:01

Re: Daten aus abhängigen Listboxen ausgeben

Beitrag von theo »


Varus
Beiträge: 19
Registriert: Fr 29. Nov 2013, 15:03

Re: Daten aus abhängigen Listboxen ausgeben

Beitrag von Varus »

Ah okay vielen Dank! Es funktioniert, das bringt mich ein gutes Stück voran!
:mrgreen:

Antworten