![]() |
Eigenschaft von cells in Stringgrid
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, habe dieses Forum jetzt erst entdeckt, genau das richtige.
Wir nehmen gerade das Sieb des Eratosthenes durch, bei dem man Primzahlen herausfindet, indem man vielfache wegstreicht. Die untenstehende Lösung liefert das nicht, aber ich bin auf ein Problem gestoßen, zu demn ich eure Hilfe brauche. Bei der Zuweisung eines Cells-Wertes über StrToInt wird ein EConvert-Fehler angegeben, d.h. der Zelleninhalt hat nicht den String-Inhalt, der dem Integerwert entspricht. Hier ist der Quellcode: unit TobiasDaniel; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm1 = class(TForm) StringGrid1: TStringGrid; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var i,j,k: integer; begin k:=0; with StringGrid1 do for j:=0 to colcount-1 do for i:=0 to RowCount-1 do begin k:=k+1; Cells[i,j]:=inttostr(k); end; end; procedure TForm1.Button2Click(Sender: TObject); var i,k:integer; begin with stringgrid1 do for i:=0 to colcount-1 do for k:=0 to rowcount-1 do begin begin if (strtoint(cells[i,k])mod 2 =0) or (strtoint(cells[i,k])mod 3 =0) or ( strtoint(cells[i,k])mod 5 =0) or (strtoint(cells[i,k])mod 7 =0)then cells[i,k]:=''; cells[2,1]:='2'; cells[3,1]:='3'; cells[5,1]:='5'; cells[7,1]:='7'; cells[1,1]:=''; end; end; end; end. Dass i und k zweimal vorkommen, ist nicht entscheidend. Bereits eine Zuordnung Zahl := StrToInt(Cells[i,k]) löst die gleiche Fehlermeldung aus, Zahl hat den Typ Integer. Weiß jemand Hilfe? |
Re: Eigenschaft von cells in Stringgrid
in Button2Klick musst du i und k vertauschen, dann sollte es klappen (cells[zeile, spalte])
|
Re: Eigenschaft von cells in Stringgrid
Herzlich willkommen in der Delphi-PRAXiS.
Du hast wahrscheinlich ein StringGrid mit RowCount = ColCount, so dass dir nicht auffällt, dass du die Zellen im event handler für Button1 falsch adressierst. Auch die Vergabe besserer Namen schützt vor solchen Fehlern:
Delphi-Quellcode:
Freundliche Grüße vom marabu
procedure TMainForm.InitButtonClick(Sender: TObject);
var iCol, iRow: Integer; begin with StringGrid do for iRow := 0 to Pred(RowCount) do for iCol :=0 to Pred(ColCount) do Cells[iCol, iRow] := IntToStr(Succ(iRow * ColCount + iCol)); end; |
Re: Eigenschaft von cells in Stringgrid
Vielen Dank für die Tipps, ich bin dann selbst drauf gekommen, als ich die angehängte exe-Datei ablaufen ließ. Er akzeptierte '' nicht als Integerwert. Anders als bei Strings, bei denen der leere String als null interpretiert wird, kann die Funktion StrToInt mit dem leeren String nichts anfangen, erkennt ihn nicht als Integerwert. Durch Setzen einer '0' ist das Problem zu beheben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz