Bestimmte Zeilen aus einem Array in einer Tabelle auslesen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Tessi1998
Beiträge: 16
Registriert: Sa 15. Mär 2014, 21:06

Bestimmte Zeilen aus einem Array in einer Tabelle auslesen

Beitrag von Tessi1998 »

Hallo alle zusammen, (:

ich hänge nun schon ziemlich lange bei der Programmierung eines Vokabeltrainers fest.
Das ganze soll über ein zweidimensionales Array (Array1: Array of Array [1..3] of String) funktionieren. Ich persönlich habe davor noch nie mit Arrays gearbeitet.

Nun kann ich mittlerweile Vokabeln in eine ausgewählte Liste hinzufügen und mich auch genau diese (die in der ausgewählten Vokabelliste gespeichert sind) abfragen lassen.
Jedoch funktioniert es nicht auch genau diese Vokabeln (und nicht die Vokabeln aus einer anderen Liste) in einer Tabelle als Übersicht darzustellen.
D.h. ich habe eine Tabelle in der immer ALLE Vokabeln angezeigt werden, was ich aber gar nicht möchte, sondern eben nur die aus der ausgewählten Vokabelliste.
Ich habe den Quelltext schon gefühlte 1000x umgeschrieben, bisher ohne Erfolg. Auch Freunde, die sich mit Arrays besser auskennen, konnten mir nicht konkret weiterhelfen. :/
Nun suche ich hier nach Hilfe, um endlich zu einem positiven Ergebnis zu kommen.
Dies ist ein kleiner Ausschnitt aus meinem Quelltext:

Code: Alles auswählen

procedure TForm1.Button15Click(Sender: TObject);
    var v1,v2:string;
   begin
    v1 := Edit4.Text;
    v2 := Edit5.Text;
    Hinzufuegen(IntToStr(Listbox1.ItemIndex),v1,v2);
    Uebersicht(IntToStr(ListBox1.ItemIndex),v1,v2);
   end;
   ___
   procedure TForm1.Hinzufuegen (Liste,Vokabel_Sprache1, Vokabel_Sprache2: string);     // zum Hinzufügen von neu eingegebenen Vokabeln in das Array
    var a1 : integer;
   begin
    a1 := Length (Array1);
    SetLength (Array1, a1+1);
    Array1[a1,1] := Liste;
    Array1[a1,2] := Vokabel_Sprache1;
    Array1[a1,3] := Vokabel_Sprache2;
   end;
   ___
   procedure TForm1.Uebersicht (const Liste2,v,u:string);
   begin
    StringGrid1.RowCount := StringGrid1.RowCount +1;
    StringGrid1.Cells[0,(StringGrid1.RowCount)-1] := v;
    StringGrid1.Cells[1,(StringGrid1.RowCount)-1] := u;
   end;
   ___
   function TForm1.Abfragen (const Liste3:string; const Richtung : integer):string;
    var i :integer; r:string;
   begin
    Repeat
      begin
        randomize;
        i := random(length(array1));
      end;
    until array1[i,1] = Liste3;
      r :=array1[i, Richtung];
      result := r;
      Label15.Caption := array1[i,3];
   end;       

_______________________________
Vielen Dank im Voraus und LG, Tessi (:
Zuletzt geändert von Lori am Di 1. Mär 2016, 13:35, insgesamt 1-mal geändert.
Grund: Highlighter

Mathias
Beiträge: 6193
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Bestimmte Zeilen aus einem Array in einer Tabelle ausles

Beitrag von Mathias »

Wen es ein bisschen leserlicher ist, bekommst vielleicht eine Antwort.

Code: Alles auswählen

procedure TForm1.Button15Click(Sender: TObject);
var
  v1, v2: string;
begin
  v1 := Edit4.Text;
  v2 := Edit5.Text;
  Hinzufuegen(IntToStr(Listbox1.ItemIndex), v1, v2);
  Uebersicht(IntToStr(ListBox1.ItemIndex), v1, v2);
end;
//___
procedure TForm1.Hinzufuegen(Liste, Vokabel_Sprache1, Vokabel_Sprache2: string); // zum Hinzufügen von neu eingegebenen Vokabeln in das Array
var
  a1: integer;
begin
  a1 := Length(Array1);
  SetLength(Array1, a1 + 1);
  Array1[a1, 1] := Liste;
  Array1[a1, 2] := Vokabel_Sprache1;
  Array1[a1, 3] := Vokabel_Sprache2;
end;
//___
procedure TForm1.Uebersicht(const Liste2, v, u: string);
begin
  StringGrid1.RowCount := StringGrid1.RowCount + 1;
  StringGrid1.Cells[0, (StringGrid1.RowCount) - 1] := v;
  StringGrid1.Cells[1, (StringGrid1.RowCount) - 1] := u;
end;
////___
function TForm1.Abfragen(const Liste3: string; const Richtung: integer): string;
var
  i: integer;
  r: string;
begin
  repeat
    begin
      randomize;
      i := random(length(array1));
    end;
  until array1[i, 1] = Liste3;
  r := array1[i, Richtung];
  Result := r;
  Label15.Caption := array1[i, 3];
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

SchwabenTom
Beiträge: 49
Registriert: So 4. Jan 2015, 21:34
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Bestimmte Zeilen aus einem Array in einer Tabelle ausles

Beitrag von SchwabenTom »

Du hast in Button15Click

Hinzufuegen(IntToStr(Listbox1.ItemIndex), v1, v2);
Uebersicht(IntToStr(ListBox1.ItemIndex), v1, v2);

Das heißt, du fügst alles in die Übersicht.
Weil du alles in die Übersicht einfügst, hast du alles in der Übersicht.
Wenn du nicht alles in der Übersicht haben willst, darfst du nicht alles in die Übersicht füllen.

Wann willst du die Übersicht füllen/anzeigen?
Wann willst du in der Übersicht die darzustellende Liste ändern und die Übersicht dann entspr. neu füllen?

Antworten