![]() |
Char Vergleich mit Charfeld
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. |
Re: Char Vergleich mit Charfeld
Mittlerweile habe ich vor alle deklarationen von "s" ein var gesetzt, und das ganze lässt sich wieder Kompilieren, allerdings taucht noch immer die selbe Exception auf, und zwar im UP "Readin" bereits beim Einlesen, obwohl ich die Buchstaben darin doch irgendwie schon einem char zuweise?
|
Re: Char Vergleich mit Charfeld
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe das ganze jetzt etwas abgeändert angefügt, und habe denke ich auch die Fehlerstelle gefunden: Im UP Submatrix. Im Kopf des Programms befindet sich eine Beschreibung was dieses Programm machen soll. Ich hoffe jemand ist mir so behilflich, und könnte mir so schnell wie möglich helfen, da es sehr dringend ist. ;)
Danke im Vorraus MFG n00b_on_knees |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:57 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