Autor Beitrag
teamrocket0
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 177
Erhaltene Danke: 1

Win ME, Win XP, Win 7, Win 10
Delphi 7, 10.2 Tokyo
BeitragVerfasst: Fr 29.08.08 11:59 
So...eine Sache die ich mal absolut nicht verstehe.

In der folgenden Schleife wird in einem "StrinGrid" gesucht.
Erst Zeilen, dann Spalten.
Die Variable "iCol" soll an die Variable "Spalten" übergeben werden.
Haut aber nicht hin.

Ich habe mir zur Analyse die "showmessage" eingebaut. Die Variable "iCol" ist aber nicht die gleiche wie "Spalten"

Weiß einer wodurch das kommt?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.Panel1Click(Sender: TObject);
    var iRow, iCol: integer;
begin
Spalten:=0;
for iRow := 0 to pred (Form1.StringGrid1.RowCount) do
  for iCol := 0 to pred (Form1.StringGrid1.ColCount) do
    if Form1.StringGrid1.Cells [iCol,iRow] = 'X' then
      Spalten:=iCol;
      Showmessage(inttostr(iCol) + 'iCol');
      Showmessage(inttostr(Spalten)+ 'Spalten');
      Showmessage(inttostr(iRow)+ 'iRow');
      Form1.ValueListEditorZeile(Spalten+1);
      Form1.Memo1.Lines.Add(Form3.ValueListEditor1.Cells[1,Zeilen]);
      Memo1.Lines.Text:=stringreplace(Form1.Memo1.Lines.Text,'*name*',Form1.StringGrid1.Cells[0,iRow],[rfReplaceAll ]);
      Zeilen:=0;
    end;


Die Variable "Spalten" wird in einer anderen Prozecur verarbeitet. Villeicht kann ich die später auch zusammenlegen!^^ Aber erst muss ich das hinbekommen das ich "iCol" kopiert bekomme!


Moderiert von user profile iconAXMD: Topic aus VCL (Visual Component Library) verschoben am Sa 30.08.2008 um 11:18

_________________
To be forgotten is worse than death!
JDKDelphi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 115
Erhaltene Danke: 22

WIN2000, XP, WIN 7 , UNIX, LINUX
Assembler für (Z8x, 68xxx,R6000,Intel), DELPHI 6 Enterprise, MAGIC eDeveloper V9+V10, C++, C#,VB, .NET, zertifizierter iBOLT-Programmierer
BeitragVerfasst: Fr 29.08.08 12:04 
Titel: StringGrid
Hallo,

probier's mal mit BEGIN und END in den FOR-Schleifen und IF-Bedingungen..

Gruss

_________________
Wo andere aufhören, fange ich erst an..
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 480

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 29.08.08 12:11 
Ich rück den Code mal so ein, wie er ausgeführt wird. Die Korrektur darfst du dann machen. ;-)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.Panel1Click(Sender: TObject); 
    var iRow, iCol: integer; 
begin 
  Spalten:=0
  for iRow := 0 to pred (Form1.StringGrid1.RowCount) do 
    for iCol := 0 to pred (Form1.StringGrid1.ColCount) do 
      if Form1.StringGrid1.Cells [iCol,iRow] = 'X' then 
        Spalten:=iCol; 
  Showmessage(inttostr(iCol) + 'iCol'); 
  Showmessage(inttostr(Spalten)+ 'Spalten'); 
  Showmessage(inttostr(iRow)+ 'iRow'); 
  Form1.ValueListEditorZeile(Spalten+1); 
  Form1.Memo1.Lines.Add(Form3.ValueListEditor1.Cells[1,Zeilen]); 
  Memo1.Lines.Text:=stringreplace(Form1.Memo1.Lines.Text,'*name*',Form1.StringGrid1.Cells[0,iRow],[rfReplaceAll ]); 
  Zeilen:=0
end;


Nebenbei müsste der Compiler Warnungen ausspucken wie "Schleifenvariable nach Durchlauf undefiniert" oder so ähnlich.

_________________
We are, we were and will not be.
JDKDelphi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 115
Erhaltene Danke: 22

WIN2000, XP, WIN 7 , UNIX, LINUX
Assembler für (Z8x, 68xxx,R6000,Intel), DELPHI 6 Enterprise, MAGIC eDeveloper V9+V10, C++, C#,VB, .NET, zertifizierter iBOLT-Programmierer
BeitragVerfasst: Fr 29.08.08 12:17 
Titel: Stringgrid
Hallo,

ich kann Gausi nur beipflichten..

Immer schön BEGIN und END-Schachtelungen verwenden.
Dient der Übersichtlichkeit und Funktionalität.

Gruss

_________________
Wo andere aufhören, fange ich erst an..
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 480

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 29.08.08 12:29 
Naja, IMMER mit begin und end zu schachteln ist imho nicht nötig. Z.B. würde ich die innere for-Schleife nicht so einpacken, denn das ist ja für die äußere Schleife nur eine Anweisung. Aufpassen muss man natürlich, und das fällt einem leichter, wenn man sich eine korrekte Einrückung der Codezeilen angewöhnt. ;-)

_________________
We are, we were and will not be.
JDKDelphi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 115
Erhaltene Danke: 22

WIN2000, XP, WIN 7 , UNIX, LINUX
Assembler für (Z8x, 68xxx,R6000,Intel), DELPHI 6 Enterprise, MAGIC eDeveloper V9+V10, C++, C#,VB, .NET, zertifizierter iBOLT-Programmierer
BeitragVerfasst: Fr 29.08.08 12:33 
Titel: StringGrid
Hallo Gausi,

Du hast recht. Man braucht's nicht immer, das BEGIN-END..
Ich mach' das aus Gewohnheit so.
Vielleicht kommt's aus meiner C-Vergangenheit

Gruss

_________________
Wo andere aufhören, fange ich erst an..
teamrocket0 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 177
Erhaltene Danke: 1

Win ME, Win XP, Win 7, Win 10
Delphi 7, 10.2 Tokyo
BeitragVerfasst: Fr 29.08.08 22:30 
Huha BAAAAM...das ist ja mal wieder nicht zu fassen.
Ach, ich bin eben kein Programmierer!^^
Das lern ich wohl nicht mehr...

Aber egal...ich konnte mein Problem lösen.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.Panel1Click(Sender: TObject);
    var iRow, iCol: integer;
begin
Spalten:=0;
for iRow := 0 to pred (Form1.StringGrid1.RowCount) do begin
  for iCol := 0 to pred (Form1.StringGrid1.ColCount) do begin
    if Form1.StringGrid1.Cells [iCol,iRow] = 'X' then  begin
      Spalten:=iCol;
      Showmessage(inttostr(iCol) + 'iCol');
      Showmessage(inttostr(Spalten)+ 'Spalten');
      Showmessage(inttostr(iRow)+ 'iRow');
      Form1.ValueListEditorZeile(Spalten);
      Form1.Memo1.Lines.Add(Form3.ValueListEditor1.Cells[1,Zeilen]);
      Memo1.Lines.Text:=stringreplace(Form1.Memo1.Lines.Text,'*name*',Form1.StringGrid1.Cells[0,iRow],[rfReplaceAll ]);
      Zeilen:=1;
      end;
    end;
  end;
end;


Ich hoffe die formatirung ist so angenehm!^^
Damals in der Berufschule wurde das nicht gelert. Aber Programmirung stand da ja auch nur am Rande...

Meine selbst gebastelte Procedur "Form1.ValueListEditorZeile(Spalten)" lass ich erstmal so stehen...es haut hin und das reicht mir erhlich gesagt auch schon!^^ Vorerst. Aufgeräumt wird später! :-)

Besten Dank an "JDKDelphi" und "Gausi"(mal wieder :P ) für den unschlagbaren Tipp.

Auf Bald, wenn es wieder heißt "WAS? WAS HAST DU PROGRAMMIERT?"^^

_________________
To be forgotten is worse than death!