Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi EAccessViolation (https://www.delphipraxis.net/129143-eaccessviolation.html)

JannesDKS 13. Feb 2009 11:20


EAccessViolation
 
Liste der Anhänge anzeigen (Anzahl: 2)
hey, ich mach grad ein paar kleine Übungen mit gemacht. Unter anderem auch folgendes Beispiel: ich berechne das Zylindervolumen mittels radius und höhe, erzeuge dann ein editfeld und schreib das ergebnis rein. Anschließend kann man das Feld wieder löschen und das formular schließen. Funzt auch alles aber anschließend haut er mir die angehängten Fehlermeldungen raus. Kann mir jemand erklären, was ich falsch gemacht habe?

Danke schonmal :)

Delphi-Quellcode:
unit FunctionErzeugungEdit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);


  private
    procedure EditFeld;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  edFeld:TEdit;

implementation
{$R *.dfm}
var v: Double;

function zylinder(r,h:Double):Double;
begin
  Result:=pi*sqr(r) * h
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  form1.EditFeld;
  try
   v:=zylinder(strtofloat(edit1.Text), strtofloat(edit2.Text));
   edfeld.Text:=floattostr(v)
  except
    edfeld.Text:='Fehler, nur Zahlen eingeben'
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  edfeld.text:='';
  edfeld.Free;

end;

procedure tform1.EditFeld;
begin
  edFeld:=tedit.Create(form1);
  edFeld.Create(form1);
  edFeld.Parent:=form1;
  edFeld.name:='DOOOOOOF';
  edFeld.SetBounds(200,200,80,20);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  close
end;

end.

[edit=Matze][delphi]-Tags eingefügt. Zukünftig bitte selbst daran denken. MfG, Matze[/edit]

DeddyH 13. Feb 2009 11:23

Re: EAccessViolation
 
Schließe bitte künftig Deinen Code in Delphi-Tags ein, dann ist er leichter zu lesen. Und mir ist diese Stelle aufgefallen:
Zitat:

Delphi-Quellcode:
edFeld:=tedit.Create(form1);
edFeld.Create(form1);

Die 2. Zeile ist vollkommen überflüssig, da das Feld ja bereits erzeugt wurde. Außerdem ist sie syntaktisch falsch. Lass sie mal weg und schau, ob Du das Problem dann immer noch hast.

Sven M. 13. Feb 2009 11:25

Re: EAccessViolation
 
Hi,
zwei Sachen:
1. Gewöhne dir bitte an, Quellcode in Delphi-Tags zu setzen. Das erhöht die Lesbarkeit...;)
2. Eine Zugriffsverletzung bei der Adresse 00000000 deutet meist auf ein noch nicht erzeugtes Objekt hin.
Ich verstehe auch noch nicht so ganz, warum du das Edit-Feld überhaupt dynamisch erzeugst.

JannesDKS 13. Feb 2009 11:27

Re: EAccessViolation
 
hey, danke, stimmt. jetzt gehts :) das forum ist für einsteiger echt klasse, mus ich mal sagen. So schnelle qualifizierte antworten zu bekommen macht echt freude :thumb:

JannesDKS 13. Feb 2009 11:28

Re: EAccessViolation
 
das erzeugen mach ich nur so aus übungszwecken ;) da mangelts mir ein wenig an phantasie. ich misch das einfach immer ein bisschen ineinander


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:03 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