AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Brauche Hilfe bei Zugriffsverletzung
Thema durchsuchen
Ansicht
Themen-Optionen

Brauche Hilfe bei Zugriffsverletzung

Ein Thema von dillipp · begonnen am 28. Feb 2012 · letzter Beitrag vom 3. Mär 2012
Antwort Antwort
dillipp

Registriert seit: 28. Feb 2012
9 Beiträge
 
Delphi 3 Professional
 
#1

Brauche Hilfe bei Zugriffsverletzung

  Alt 28. Feb 2012, 17:17
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:
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.
jetzt schon mal vielen dank,

dillipp
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Brauche Hilfe bei Zugriffsverletzung

  Alt 28. Feb 2012, 17:29
Ich geh mal davon aus, daß jede Class ein Create benötigt.
Sicher bin ich mir allerdings, daß
if IsNumeric(EditParty.text)=true then nicht das Gelbe vom Ei ist.
if IsNumeric(EditParty.text) then ist schon etwas besser.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
dillipp

Registriert seit: 28. Feb 2012
9 Beiträge
 
Delphi 3 Professional
 
#3

AW: Brauche Hilfe bei Zugriffsverletzung

  Alt 28. Feb 2012, 17:35
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
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#4

AW: Brauche Hilfe bei Zugriffsverletzung

  Alt 28. Feb 2012, 18:26
Hallo...
schaue dir bitte dringend mal Tutorials über den Aufbau einer Klasse an.
Delphi-Quellcode:
TActor = class
     public
       Name:String;
       Index:Integer;
       Party:String;
       KO:Integer;
       KK:Integer;
       LeP, INI, AT, PA, GS:Integer;
       Waffe, TP:String;
     end;
...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"
Lese dir die Tutorials mal durch: http://www.delphi-treff.de/tutorials...rogrammierung/
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Brauche Hilfe bei Zugriffsverletzung

  Alt 28. Feb 2012, 19:53
Ach, noch am Rande bemerkt:
deine "IsNumeric" Funktion prüft nur, ob das letzte Zeichen eine Zahl ist!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (28. Feb 2012 um 22:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#6

AW: Brauche Hilfe bei Zugriffsverletzung

  Alt 28. Feb 2012, 20:00
Fast.

Ob mindestens eines der Zeichen eine Ziffer ist.
Und für jedes einzelne ungültige Zeichen wird die Meldung angezeigt.

Delphi-Referenz durchsuchenTryStrToInt
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: Brauche Hilfe bei Zugriffsverletzung

  Alt 28. Feb 2012, 21:38
Stimmt...

Verbesserung: einfach Result Wertezuweisung negieren!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
dillipp

Registriert seit: 28. Feb 2012
9 Beiträge
 
Delphi 3 Professional
 
#8

AW: Brauche Hilfe bei Zugriffsverletzung

  Alt 3. Mär 2012, 08:56
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^^
dillipp
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#9

AW: Brauche Hilfe bei Zugriffsverletzung

  Alt 3. Mär 2012, 09:14
Hallo...
schaue dir bitte dringend mal Tutorials über den Aufbau einer Klasse an.
...mag zwar funktionieren aber im public arbeitet man mit Properties und "Klasseninterne" Sachen gehören in private.
Nein, so kann man das nicht verallgemeinern. Hast Du noch nie etwas von DTO (Data transfer object) gehört?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Brauche Hilfe bei Zugriffsverletzung

  Alt 3. Mär 2012, 09:21
Hallo...
schaue dir bitte dringend mal Tutorials über den Aufbau einer Klasse an.
...mag zwar funktionieren aber im public arbeitet man mit Properties und "Klasseninterne" Sachen gehören in private.
Nein, so kann man das nicht verallgemeinern. Hast Du noch nie etwas von DTO (Data transfer object) gehört?
Für den Anfang kann man das schon so verallgemeinern. Dann denkt man auf jeden Fall immer zweimal nach, wenn es erforderlich ist davon abzuweichen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz