Hallo liebes Forum,
bin VB.net Umsteiger. Hab meine ersten Erfahrungen in Delphi gemacht. Aber ich komme bei diesem Problem irgendwie nicht weiter.
Ich habe eine Form
unit und eine unit2 der sich eine Klasse befindet. In der Form
unit initialisiere ich eine Objektvariable der Klasse aus unit2 und einen Typ (Dynamisches Array). In einem Button Event wird eine Funktion der Klasse aufgerufen. Rückgabe sollte eigentlich ein Dynamisches Array sein. Sobald ich mit SetLength result neu dimensionieren will kommt eine
Exception. Was mach ich falsch bzw. wie kann ich es richtig machen? Anbei der Code:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Unit2, StdCtrls;
type
TForm1 =
class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
myClass: TMyClass;
test: Tarr;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
const str = '
Dies ist ein Test';
begin
test := myclass.myfunc(str);
for i := 0
to High(test)
do
self.Edit1.Text := self.Edit1.Text + IntToStr(test[i]);
end;
end.
Delphi-Quellcode:
unit Unit2;
interface
uses
Math, IdHashMessageDigest, idHash, SysUtils, Classes;
type
Tarr =
array of Int64;
TMyClass =
class(TObject)
private
public
constructor create();
function myfunc(str:
string): Tarr;
end;
implementation
constructor TMyClass.create;
begin
end;
function TMyClass.myfunc(str:
string): Tarr;
var
i: integer;
asciiArray:
array of Int64;
begin
i := 0;
SetLength(asciiArray, Length(str));
for i := 0
to 31
do begin
AsciiArray[i] := Ord(str[i + 1]);
end;
//SetLength(result, high(AsciiArray)); <<<<<< Hier gibt es die Exception!
for i := Low(AsciiArray)
to High(AsciiArray)
do
result[i] := AsciiArray[i];
end;
end.