Neuling benötigt Help :)

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Skrenkovic
Beiträge: 22
Registriert: Mi 1. Mai 2013, 19:18

Neuling benötigt Help :)

Beitrag von Skrenkovic »

Hallo Comm :)

Ich benötige Hilfe bei einem warscheinlich einfachen Problem und finde bei google evt keine Lösung
Was ich will ist relativ simpel.

Code: Alles auswählen

 B_aktuell:=B_aktuell-b_vorgaenger;                   // b_akktuell bekommt einen Wert zugewießen
   agrid:=1;                                         // soll bei 1 anfangen dann 2,3,4,5...100
   gridname:='A+(agrid)';                            // Gridname ist als string deklariert
   form1.gridname.cells[BSpalte,BReihe]:=B_Aktuell;  
Ich will nun einfach das ich bsp für 100 Stringrids bei [BSpalte,BReihe] nacheinander etwas reinschreiben kann hier in diesem Fall die variable "B_Aktuell".
Sozusagen will ich das sich agrid immer um eins erhöht(was es am programmanfant macht) und dann alle Stringrids durchläuft. Es so also in A1,A2,A3,A4...A100 eingeschriebn werden. Also der name des Striongrids verändert sich immer. Besteht aus A und der nummer. Ich habe nun versucht das A+agrid als string zu scheriben und dann abzurufen.... will er aber nicht ... was kann ich tun? bin ich auf dem richtigen weg oder nicht? kann man einen namen mit variablen zusammenbauen?

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Neuling benötigt Help :)

Beitrag von Christian »

TStringGrid(form1.FindComponent(gridname)).cells[BSpalte,BReihe]:=B_Aktuell;
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Skrenkovic
Beiträge: 22
Registriert: Mi 1. Mai 2013, 19:18

Re: Neuling benötigt Help :)

Beitrag von Skrenkovic »

Christian hat geschrieben:TStringGrid(form1.FindComponent(gridname)).cells[BSpalte,BReihe]:=B_Aktuell;
Das funktionert irgendwie nicht ... kommt nur ne fehlermeldung
unit2.pas(1047,15) Error: Identifier not found "TStringGrid"

Code: Alles auswählen

B_aktuell:=B_aktuell-b_vorgaenger;                //b_akktuell bekommt einen Wert zugewießen
   agrid:=1;                                         // soll bei 1 anfangen dann 2,3,4,5...100
   gridname:='A+(agrid)';                            // Gridname ist als string deklariert
   TStringGrid(form1.FindComponent(gridname)).cells[BSpalte,BReihe]:=B_Aktuell;
und wenn ich das wie folgt änder

Code: Alles auswählen

form1.FindComponent(gridname).cells[BSpalte,BReihe]:=B_Aktuell;
komtm folgende fehlermeldung:
unit2.pas(1047,34) Error: identifier idents no member "cells"

sollte evtl erwähnen das ich mich momentan auf Form2 befinde und das in Form, 1 angezeigt werden soll :)

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

Re: Neuling benötigt Help :)

Beitrag von theo »

Skrenkovic hat geschrieben: Das funktionert irgendwie nicht ... kommt nur ne fehlermeldung
unit2.pas(1047,15) Error: Identifier not found "TStringGrid"
Dann ist unit2 nicht die Unit wo das StringGrid definiert ist.

Code: Alles auswählen

 
uses Grids 
könnte helfen.

Skrenkovic
Beiträge: 22
Registriert: Mi 1. Mai 2013, 19:18

Re: Neuling benötigt Help :)

Beitrag von Skrenkovic »

theo hat geschrieben:
Skrenkovic hat geschrieben: Das funktionert irgendwie nicht ... kommt nur ne fehlermeldung
unit2.pas(1047,15) Error: Identifier not found "TStringGrid"
Dann ist unit2 nicht die Unit wo das StringGrid definiert ist.

Code: Alles auswählen

 
uses Grids 
könnte helfen.

so der befehl funktioniert nun ... beim programmdurchlaufen lassen kommt zwar ne fehlermeldung .. aber das bekomm ich hin danke

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Neuling benötigt Help :)

Beitrag von hde »

Skrenkovic hat geschrieben:gridname:='A+(agrid)';
was soll denn das bewirken?

Skrenkovic
Beiträge: 22
Registriert: Mi 1. Mai 2013, 19:18

Re: Neuling benötigt Help :)

Beitrag von Skrenkovic »

hi :) jetzt habe ich ncih ne frage wie ist es wenn ich nun das gleiche nur mit arrays machen will?

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Neuling benötigt Help :)

Beitrag von hde »

Skrenkovic hat geschrieben:gridname:='A+(agrid)';
Namen kann man bilden/modifizieren, aber man muss es richtig machen :wink:
Skrenkovic hat geschrieben:jetzt habe ich ncih ne frage wie ist es wenn ich nun das gleiche nur mit arrays machen will?
Arrays kann man direkt indizieren

Skrenkovic
Beiträge: 22
Registriert: Mi 1. Mai 2013, 19:18

Re: Neuling benötigt Help :)

Beitrag von Skrenkovic »

Wie meinst du das man muss es richtig machen

Code: Alles auswählen

gridname:='A+IntToStr(agrid)';
steht nun bei mir und es Funktioniert :) ich werde später mal genau so also nach diesem Schema meine Arraynamen zusammenzubauen und dann versuchen ob das Funktioniert oder nicht :)

Skrenkovic
Beiträge: 22
Registriert: Mi 1. Mai 2013, 19:18

Re: Neuling benötigt Help :)

Beitrag von Skrenkovic »

hde hat geschrieben:
Skrenkovic hat geschrieben:gridname:='A+(agrid)';
was soll denn das bewirken?
Ich habe 6 Stringgrids Name: A1,A2,A3,A4,A5,A6
Jetzzt habe ich das A stehen gelassen und in der variable "agrid" steht nun je nach dem 1..6 drinne

Achtzig
Beiträge: 90
Registriert: Mo 15. Okt 2007, 13:09
OS, Lazarus, FPC: Debian
CPU-Target: xxBit

Re: Neuling benötigt Help :)

Beitrag von Achtzig »

Diese Variante wäre auch nicht schlecht: gridname:='A'+IntToStr(agrid); (man beachte die Wanderung des Anführungszeichens)

Wenn Du gridname:='A+IntToStr(agrid)'; schreibst, wird gridname immer exakt 'A+IntToStr(agrid)' sein und nicht 'A1' und so weiter.

Skrenkovic
Beiträge: 22
Registriert: Mi 1. Mai 2013, 19:18

Re: Neuling benötigt Help :)

Beitrag von Skrenkovic »

ähhhm... doch also es Funktioniert zumindest mal ... er wechselt immer die Stringgrids durch so wie ich das möchte die variable gridname ist als string deklariert

Achtzig
Beiträge: 90
Registriert: Mo 15. Okt 2007, 13:09
OS, Lazarus, FPC: Debian
CPU-Target: xxBit

Re: Neuling benötigt Help :)

Beitrag von Achtzig »

Das es sich um einen String handeln sollte, ist schon klar. Aber warum es bei Dir funktioniert ist nicht klar. Ich bezweifele sogar, daß es kontrolliert funktioniert.

Wenn Du diese Prozedur aufrufst:

Code: Alles auswählen

procedure test;
var agrid:integer; 
begin
  writeln('Schleife mit ''A+IntToStr(agrid)''');
  for agrid:=1 to 6 do writeln('A+IntToStr(agrid)');
  writeln('');
  writeln('Schleife mit ''A''+IntToStr(agrid)');
  for agrid:=1 to 6 do writeln('A'+IntToStr(agrid));
end; 
erscheint (logischer Weise) folgendes:
Schleife mit 'A+IntToStr(agrid)'
A+IntToStr(agrid)
A+IntToStr(agrid)
A+IntToStr(agrid)
A+IntToStr(agrid)
A+IntToStr(agrid)
A+IntToStr(agrid)

Schleife mit 'A'+IntToStr(agrid)
A1
A2
A3
A4
A5
A6

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Neuling benötigt Help :)

Beitrag von hde »

@Achtzig,
ich hatte gehofft, Skrenkovic wäre selbst drauf gekommen :wink:
hde

Antworten