![]() |
Brauche Hilfe bei Zugriffsverletzung
Moin, ich hab grade angefangen, ein Programm zu DSA (kennt bestimmt keiner, is auch unwichtig) zu schreiben. In dem Programm gibt einen Hinzufügen Button, der einem Array daten zuweist, jedoch bekomme ich immer eine Zugriffsverletzung, wenn ich das versuche. Kann mir jemand helfen?
Ach ja, hier noch mal der Quellcode:
Delphi-Quellcode:
jetzt schon mal vielen dank,
unit UnitMap;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) GroupBox1: TGroupBox; Image1: TImage; Button1: TButton; ButtonSave: TButton; ButtonLoad: TButton; ButtonAdd: TButton; ButtonDelete: TButton; ButtonQuit: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; EditName: TEdit; EditParty: TEdit; EditKO: TEdit; EditKK: TEdit; EditTP: TEdit; EditINI: TEdit; EditAT: TEdit; EditPA: TEdit; EditWaffe: TEdit; EditGS: TEdit; EditLeP: TEdit; Button2: TButton; procedure ButtonQuitClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ButtonAddClick(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; type TActor = class public Name:String; Index:Integer; Party:String; KO:Integer; KK:Integer; LeP, INI, AT, PA, GS:Integer; Waffe, TP:String; end; type TDatensatz = record Map:String[40]; Actors:TActor; end; var Form1: TForm1; FActors: Array[1..40] of TActor; Index:Integer; implementation uses UnitAdd; {$R *.DFM} procedure TForm1.ButtonQuitClick(Sender: TObject); begin exit; end; procedure TForm1.Button1Click(Sender: TObject); begin if Button1.Caption='+' then begin Button1.Caption:='-'; ButtonSave.visible:=true; ButtonLoad.visible:=true; ButtonAdd.visible:=true; ButtonDelete.visible:=true; ButtonQuit.visible:=true; end else begin Button1.Caption:='+'; ButtonSave.visible:=false; ButtonLoad.visible:=false; ButtonAdd.visible:=false; ButtonDelete.visible:=false; ButtonQuit.visible:=false; end; end; procedure TForm1.FormCreate(Sender: TObject); begin index:=0; end; procedure TForm1.ButtonAddClick(Sender: TObject); begin Form1.Width:=Form1.Width+100; end; function IsNumeric(s:String):Boolean; var i:Integer; begin Result:=False; for i := 1 to Length(s) do if not (s[i] in ['0'..'9']) then showmessage('Ungültige Zeichen!!') else Result:=True; end; procedure TForm1.Button2Click(Sender: TObject); begin index:=1; // with FActors[index] do begin FActors[index].Name:=EditName.text; FActors[index].Party:=EditParty.text; if IsNumeric(EditParty.text)=true then FActors[index].KO:=StrToInt(EditKO.text); if IsNumeric(EditKK.text)=true then FActors[index].KK:=StrToInt(EditKK.text); FActors[index].TP:=EditTP.text; if IsNumeric(EditINI.text)=true then FActors[index].INI:=StrToInt(EditINI.text); if IsNumeric(EditAT.text)=true then FActors[index].AT:=StrToInt(EditAT.text); If IsNumeric(EditPA.text)=true then FActors[index].PA:=StrToInt(EditPA.text); FActors[index].Waffe:=EditWaffe.text; if IsNumeric(EditGS.text)=true then FActors[index].GS:=StrToInt(EditGS.text); if IsNumeric(EditLeP.text)=true then FActors[index].LeP:=StrToInt(EditLeP.text); end; end; end. dillipp |
AW: Brauche Hilfe bei Zugriffsverletzung
Ich geh mal davon aus, daß jede Class ein Create benötigt.
Sicher bin ich mir allerdings, daß
Delphi-Quellcode:
nicht das Gelbe vom Ei ist.
if IsNumeric(EditParty.text)=true then
Delphi-Quellcode:
ist schon etwas besser.
if IsNumeric(EditParty.text) then
Gruß K-H |
AW: Brauche Hilfe bei Zugriffsverletzung
Ja, das wars
ich danke dir vielmals. Das mit dem unschönen hatte ich auch zuerst nicht drinnen, aber ich wusste nicht wo das problem war und hab deswegen einfach mal =true hingeschrieben. Jetzt funktionier aber soweit alles. dillipp |
AW: Brauche Hilfe bei Zugriffsverletzung
Hallo...
schaue dir bitte dringend mal Tutorials über den Aufbau einer Klasse an.
Delphi-Quellcode:
...mag zwar funktionieren aber im public arbeitet man mit Properties und "Klasseninterne" Sachen gehören in private. Von diesen Sichtbarkeiten gibt es noch welche "for Runaways" :stupid:
TActor = class
public Name:String; Index:Integer; Party:String; KO:Integer; KK:Integer; LeP, INI, AT, PA, GS:Integer; Waffe, TP:String; end; Lese dir die Tutorials mal durch: ![]() |
AW: Brauche Hilfe bei Zugriffsverletzung
Ach, noch am Rande bemerkt:
deine "IsNumeric" Funktion prüft nur, ob das letzte Zeichen eine Zahl ist! |
AW: Brauche Hilfe bei Zugriffsverletzung
Fast.
Ob mindestens eines der Zeichen eine Ziffer ist. Und für jedes einzelne ungültige Zeichen wird die Meldung angezeigt. ![]() |
AW: Brauche Hilfe bei Zugriffsverletzung
Stimmt...
Verbesserung: einfach Result Wertezuweisung negieren! |
AW: Brauche Hilfe bei Zugriffsverletzung
Thx, für die hilfe,
meine IsNumeric Funktion meckert jetzt nur noch bei jedem falschen wort, mehr brauche ich hier aber auch nicht. Mit dem Aufbau von Klassen hab ich mich an dem Abend (fast) zum ersten mal beschäftigt, vergebt mir also bitte all meine Fehler^^ |
AW: Brauche Hilfe bei Zugriffsverletzung
Zitat:
|
AW: Brauche Hilfe bei Zugriffsverletzung
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:10 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