Daten aus Stringgrid
Daten aus Stringgrid
Hallo,
ich möchte aus einer Stringgrid Daten auslesen.
am einfachsten erkläre ich meine Situation wohl an einem Beispiel:
1 .. 5 .. 6
2 .. 7 .. 8
3 .. 9 .. 12
4 .. 11.. 20
Sei das meine tabelle. nun will ich zu meinem wert in der ersten Spalte den Wert der 2. und 3. wissen. Wenn ich also die 2 habe, möchte ich an die 7 und an die 8 kommen (3-> 9 und 12; etc.)
Es muss nicht zwangsweise eine Stringgrid sein, wenn jemand also eine elegantere Lösung weiß, wäre das auch toll.
Wenn mir bei diesem Problem jemand weiterhelfen könnte, würde ich mich sehr freuen.
Mit freundlichen Grüßen
SME
ich möchte aus einer Stringgrid Daten auslesen.
am einfachsten erkläre ich meine Situation wohl an einem Beispiel:
1 .. 5 .. 6
2 .. 7 .. 8
3 .. 9 .. 12
4 .. 11.. 20
Sei das meine tabelle. nun will ich zu meinem wert in der ersten Spalte den Wert der 2. und 3. wissen. Wenn ich also die 2 habe, möchte ich an die 7 und an die 8 kommen (3-> 9 und 12; etc.)
Es muss nicht zwangsweise eine Stringgrid sein, wenn jemand also eine elegantere Lösung weiß, wäre das auch toll.
Wenn mir bei diesem Problem jemand weiterhelfen könnte, würde ich mich sehr freuen.
Mit freundlichen Grüßen
SME
Re: Daten aus Stringgrid
Normalerweise mit Bspw:
Oder meinst du was anderes?
Code: Alles auswählen
MeinString:=StringGrid1.Cells[2,1];
Oder meinst du was anderes?
Re: Daten aus Stringgrid
hallo theo,
ja, an sich schon. allerdings (war an meinem beispiel leider falsch) habe ich nicht vorne 1,2,3,4,..., sondern 3,4,5,6,8,10,12,16,.... und ich will nur diesen wert vorgeben und dann aus der gleichen Zeile die beiden anderen werte auslesen (ergebnis1:=StringGrid1.Cells[i,k]). ich müsste also herausfinden, in welcher zeile die 8 oder die 16/... steht.
Da liegt mein derzeitiges Problem
Danke
SME
ja, an sich schon. allerdings (war an meinem beispiel leider falsch) habe ich nicht vorne 1,2,3,4,..., sondern 3,4,5,6,8,10,12,16,.... und ich will nur diesen wert vorgeben und dann aus der gleichen Zeile die beiden anderen werte auslesen (ergebnis1:=StringGrid1.Cells[i,k]). ich müsste also herausfinden, in welcher zeile die 8 oder die 16/... steht.
Da liegt mein derzeitiges Problem
Danke
SME
Re: Daten aus Stringgrid
Meinst du so???
der nächste Eintrag auf der Zeile wäre dann "StringGrid1.Cells[StringGrid1.Col + 1,StringGrid1.Row]"
Code: Alles auswählen
procedure TForm1.StringGrid1Click(Sender: TObject);
begin
Caption:=StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]; //aktuelle Spalte, aktuelle Zeile
end;
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Daten aus Stringgrid
SME hat geschrieben:ich müsste also herausfinden, in welcher zeile die 8 oder die 16/... steht.
Code: Alles auswählen
StringGrid1.Cols[1].IndexOf('8');
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: Daten aus Stringgrid
vielen Dank für eure antworten, sie haben mir schon echt weitergeholfen
aber irgendwie löst es bei mir regelmäßig eine Exception aus, dass der WErtebereich verletzt wurde.
ich habe schon echt ein bisschen rumprobiert, komm aber nicht weiter. muss wohl damit zusammenhängen, wie Lazarus die Zeilen/Spalten zählt.
die Meldung kam, als ich nach (Nenn)D =5 gesucht habe:
exception-Klasse >>EGridException<< mit der meldung:
index out of range Cell[col=-1 row=3]
hier mal mein Code und im anhang ein Bild der Tabelle.
nRow := form_mase.StringGrid1.Cols[2].IndexOf(floattostr(D));
P := strtofloat(form_mase.StringGrid1.cells[nRow,3]);
d_2 := strtofloat(form_mase.StringGrid1.cells[nRow,4]);
d_3 := strtofloat(form_mase.StringGrid1.cells[nRow,5]);
vielen Dank im Voraus
SME
aber irgendwie löst es bei mir regelmäßig eine Exception aus, dass der WErtebereich verletzt wurde.
ich habe schon echt ein bisschen rumprobiert, komm aber nicht weiter. muss wohl damit zusammenhängen, wie Lazarus die Zeilen/Spalten zählt.
die Meldung kam, als ich nach (Nenn)D =5 gesucht habe:
exception-Klasse >>EGridException<< mit der meldung:
index out of range Cell[col=-1 row=3]
hier mal mein Code und im anhang ein Bild der Tabelle.
nRow := form_mase.StringGrid1.Cols[2].IndexOf(floattostr(D));
P := strtofloat(form_mase.StringGrid1.cells[nRow,3]);
d_2 := strtofloat(form_mase.StringGrid1.cells[nRow,4]);
d_3 := strtofloat(form_mase.StringGrid1.cells[nRow,5]);
vielen Dank im Voraus
SME
- Dateianhänge
-
- Unbenannt.PNG (5.94 KiB) 1278 mal betrachtet
Re: Daten aus Stringgrid
Bitte Highlighter "Freepascal/Lazarus" für Code benutzen!!!
Eigentlich sagt die Exception schon, was nicht funktioniert: Ein Zugriff auf Col=-1 ist nicht möglich! Cols und Rows haben einen Bereich von 0..X!
Damit kommt schon das nächste Problem: Wenn du nach der Zeile, wo NennD=5 ist suchst und dein Bild die StringGrid darstellt muss der Code wie folgt lauten:Cols[1] statt Cols[2]! Daher hat dein Programm auch in der falschen Spalte gesucht und konnte den Eintrag nicht finden -> Rückgabe Index von "-1"!
Zugriffe auf die Spalte/Zeile sind verdreht:Erst kommt Col, dann Row!
Eigentlich sagt die Exception schon, was nicht funktioniert: Ein Zugriff auf Col=-1 ist nicht möglich! Cols und Rows haben einen Bereich von 0..X!
Damit kommt schon das nächste Problem: Wenn du nach der Zeile, wo NennD=5 ist suchst und dein Bild die StringGrid darstellt muss der Code wie folgt lauten:
Code: Alles auswählen
nRow := form_mase.StringGrid1.Cols[1].IndexOf(floattostr(D));
Zugriffe auf die Spalte/Zeile sind verdreht:
Code: Alles auswählen
P := strtofloat(form_mase.StringGrid1.cells[2,nRow]);
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;