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?