| Autor |
Beitrag |
teamrocket0
      
Beiträge: 177
Erhaltene Danke: 1
Win ME, Win XP, Win 7, Win 10
Delphi 7, 10.2 Tokyo
|
Verfasst: 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?
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 AXMD: Topic aus VCL (Visual Component Library) verschoben am Sa 30.08.2008 um 11:18
_________________ To be forgotten is worse than death!
|
|
JDKDelphi
      
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
|
Verfasst: 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
      
Beiträge: 8554
Erhaltene Danke: 480
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: 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.
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
      
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
|
Verfasst: 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
      
Beiträge: 8554
Erhaltene Danke: 480
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: 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
      
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
|
Verfasst: 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 
      
Beiträge: 177
Erhaltene Danke: 1
Win ME, Win XP, Win 7, Win 10
Delphi 7, 10.2 Tokyo
|
Verfasst: 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.
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  ) für den unschlagbaren Tipp.
Auf Bald, wenn es wieder heißt "WAS? WAS HAST DU PROGRAMMIERT?"^^
_________________ To be forgotten is worse than death!
|
|
|