Schönenn guten Abend,
ich habe gerade ein Update von Delphi 2009 auf Delphi XE durchgeführt. Beim Start eines Projektes, durfte ich feststellen, daß eine alte
Unit nicht mehr funktioniert.
Mir ist derzeit nicht ganz klar, wo der Fehler liegt. Vielleicht kann mir hier jemand einen Tipp geben. Ich bekomme die Fehlermeldung, daß ich hier ein jetzt Konstantenobjekt habe und als Folgefehler daraus die Meldung, daß nichts zugewiesen werden kann. Möglicherweise liegt es an einigen Veränderungen zwischen D2009->DXE.
Ich hoffe ich habe hier alle relevanten Teile für eine Beispielprozedur rauskopiert.
Delphi-Quellcode:
unit uFLPReader;
interface
uses
Windows, Classes, SysUtils;
type
TAlgenklassenparameter =
packed record
_Name: AnsiString;
_FlagUseInFit: Longint;
_Fingerprint_Standardabweichung:
array[1..16]
of Double;
_LEDOffset: Double;
end;
TParametersOfFit1 =
packed record
_Algenklassenparameter:
array[1..8]
of TAlgenklassenparameter;
end;
TFLPModule =
class(TObject)
private
FParametersOfFit1: TParametersOfFit1;
procedure ReadParametersOfFit1(
const AStream: TStream);
public
property ParametersOfFit1: TParametersOfFit1
read FParametersOfFit1;
end;
implementation
procedure TFLPModule.ReadParametersOfFit1(
const AStream: TStream);
var
i : Integer;
NameLen : Longint;
Dummy : AnsiString;
begin
for i := 1
to 8
do
with ParametersOfFit1._Algenklassenparameter[i]
do
begin
AStream.ReadBuffer(NameLen, SizeOf(NameLen));
SetLength (_Name, NameLen);
// hier ein Fehler
if NameLen > 0
then
Begin
AStream.ReadBuffer(_Name[1], NameLen);
// hier ein Fehler
_Name := Copy (_Name, 0, NameLen-1);
end
Else
Begin
_Name := '
';
end;
AStream.ReadBuffer(_FlagUseInFit, SizeOf(_FlagUseInFit));
// hier ein Fehler
AStream.ReadBuffer(_Fingerprint_Standardabweichung, SizeOf(_Fingerprint_Standardabweichung));
// hier ein Fehler
AStream.ReadBuffer(_LEDOffset, SizeOf(_LEDOffset));
// hier ein Fehler
end;
end;
Analog gibt es noch andere Stellen, wo der Fehler meiner Meinung nach aber die selbe Ursache haben dürfte. Bisher habe ich mit dieser
Unit nie Probleme gehabt. Ich schleppe sie seit D7 in einem Projekt mit durch. Möglicherweise bin ich gerade mit Blindheit geschlagen, aber ich komm nicht drauf.
Herzlichen Dank,
Jan