Einzelnen Beitrag anzeigen

Benutzerbild von n00b_on_knees
n00b_on_knees

Registriert seit: 5. Apr 2003
128 Beiträge
 
#1

Char Vergleich mit Charfeld

  Alt 2. Sep 2003, 21:16
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.
Against TCPA & And I think we should live our dreams
  Mit Zitat antworten Zitat