N'Abend!
Ich bin gerade bei einem Programm bei dem ich ja schon vor ein paar Wochen Probleme hatte, was sich aber nicht so wirklich beheben hat lassen. Jetzt habe ich das ganze etwas umgeschrieben, aber es tut sich noch immer ein Fehler auf. Ich vergleiche ein eingelesenes CharElement mit den einzelnen Elementen eines Charfeldes, doch immer wenn ich das tue, kommt eine
Exception, dass das gesuchte Wort keine Integerzahl wäre. Ich frage mich natürlich was hier eine Integerzahl zu suchen hat.
Und jetzt habe ich sogar das Problem, das die .EXE Datei nicht erstellt werden kann.
Jetzt kann ich auch das ganze nicht debuggen, also frage ich wiedermal euch was da der Fehler sein könnte.
Ich poste hier den ganzen Quellcode, falls er zu lang ist oder es euch weiterhelfen würde, wenn ich das ganze als Anhang beifügen könnte, lasst es mich bitte wissen.
Der Sinn des Programms besteht darin, eben ein CharElement im StringGrid zu finden, und ab dieser Position alle Elemente des StringGrids mit einem beliebigen Wert zu füllen.
Delphi-Quellcode:
unit fCharMatrix;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
//Konstatendeklaration
const
M = 5;
N = 5;
type
TFeld =
array [1..M, 1..N]
of char;
TForm1 =
class(TForm)
StringGrid1: TStringGrid;
lbGesucht: TLabel;
edGesucht: TEdit;
btFinden: TButton;
procedure btFindenClick(Sender: TObject);
procedure ReadIn(
var A: TFeld; s: TStringGrid);
procedure DeleteMatrix(
var A: TFeld; s: TStringGrid;
var x, y: integer);
private
function SubMatrix(
var A: TFeld; s: TStringGrid; Ges: char;
var x, y: integer): boolean;
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.SubMatrix(
var A: TFeld; s: TStringGrid; Ges: char;
var x, y: integer): boolean;
//Variablendeklaration
var
i, j: integer;
begin
i:= 1;
j:= 1;
repeat
if (A[i, j] = Ges)
then
begin
x:= i;
y:= j;
result:= true;
end
else
result:= false;
inc(i);
inc(j);
until (result = true);
end;
procedure TForm1.DeleteMatrix(
var A: TFeld; s: TStringGrid;
var x, y: integer);
//Variablendeklaration
var
i, j: integer;
begin
for i:= (x+1)
to M
do
for j:= (y+1)
to N
do
A[i, j]:= #240;
end;
procedure TForm1.ReadIn(
var A: TFeld; s: TStringGrid);
//Variablendeklaration
var
i, j: integer;
begin
for i:= 1
to M
do
for j:= 1
to N
do
A[i, j]:= Chr(StrToInt(s.Cells[i, j]));
end;
procedure TForm1.btFindenClick(Sender: TObject);
//Variablendeklaration
var
Ges: char;
s: TStringGrid;
Gef: Boolean;
A: TFeld;
x, y: integer;
begin
Readin(A, s);
Ges:= Chr(StrToInt(edGesucht.Text));
s:= StringGrid1;
Gef:= SubMatrix(A, s, Ges, x, y);
if (Gef = True)
then
DeleteMatrix(A, s, x, y);
end;
end.