![]() |
Was mache ich falsch?
Delphi-Quellcode:
Wenn ich nun ein Objekt der Klasse TTest erzeuge und anschließend den Konstruktur aufrufe, dann kommt dauernt eine Access Violation. Aber warum? Ich versteh es nicht? Muss ich vielleicht vorher noch Speicher reservieren? Kann mir das vielleicht jemand mal erklären, steige nicht hinter den Fehler!
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type ptrEmployment = ^TEmployment; TEmployment = record FWorkInstruction : String; //ausgeführte Tätigkeit FDuration : Double; //Dauer FDepartment : String; //Abteilung pro Tätigkeit end; TTest = class private FEmployment: Array[0..4] of TEmployment; function GetWorkInstruction(nIndex: Integer): String; public property Taetigkeit[nIndex: Integer]: String read GetWorkInstruction; constructor Create; end; TForm1 = class(TForm) Button1: TButton; Button2: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } Montag: TTest; end; var Form1: TForm1; implementation {$R *.dfm} { TTest } constructor TTest.Create; var i: Integer; begin for i := 0 to 4 do begin FEmployment[ i ].FWorkInstruction := ''; FEmployment[ i ].FDuration := 0; FEmployment[ i ].FDepartment := ''; end; FEmployment[ 0 ].FWorkInstruction := 'Test'; end; function TTest.GetWorkInstruction(nIndex: Integer): String; begin Result := FEmployment[ nIndex ].FWorkInstruction; end; procedure TForm1.Button1Click(Sender: TObject); begin Montag.Create; end; procedure TForm1.Button2Click(Sender: TObject); begin Label1.Caption := Montag.Taetigkeit[ 0 ]; end; end. thx |
Zitat:
Zitat:
2) Montag musst Du erst einmal erstellen:
Delphi-Quellcode:
Montag gibt es nicht, also kannst Du auch nicht auf eine Methode von Montag zugreifen. Also:
Montag.Create;
Delphi-Quellcode:
Montag := TTest.Create;
|
Zwei Änderungen:
Code:
...:cat:...
constructor TTest.Create;
var i: Integer; begin [color=#1100ff]// einfügen inherited;[/color] for i := 0 to 4 do begin FEmployment[ i ].FWorkInstruction := ''; FEmployment[ i ].FDuration := 0; FEmployment[ i ].FDepartment := ''; end; FEmployment[ 0 ].FWorkInstruction := 'Test'; end; // und // anstatt Monatg.Create // musst Du folgendes schreiben: [color=#1100ff]Montag := TTest.Create;[/color] |
Zitat:
Zitat:
Zitat:
Ist es eigentlich ratsam eine Klasse immer von TObject abzuleiten? |
Zitat:
Zitat:
Zitat:
TObject > ... > TEdit > TMyEdit |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:34 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