[fpc-pascal] Clueless here
Michalis Kamburelis
michalis at camelot.homedns.org
Fri Jun 30 00:09:55 CEST 2006
Darius Blaszijk wrote:
> Hi,
>
> I have two overloaded functions. One overloaded function just rearanges
> one parameter from an array of extended to an array of ^extended and
> calls the other overloaded function. The problem is however that the 2nd
> function call crashes the app. I really have no idea why therefore I'm
> posting the code in the hope someone with more insight can help me here.
>
> So what happens is the following; the first debugmessages are ok and as
> expected. However the second debugmessages (array of PJmFloat) crash the
> application. I have attached the backtrace.
>
> Darius
>
> type
> TJmFloat = extended;
> PJmFloat = ^TJmFloat;
> TDynTJmFloatArray = array of TJmFloat;
>
> Function FitSession( Parameters : array of PJmFloat; ChiSquareFunc :
> TOFitFunc ) : IFit;
> var i: integer;
> begin
> //debug only
> for i := 0 to High(Parameters) do
> ShowMessage('array of PJmFloat ' + FloatToStr(Parameters[i]^));
>
> Result := TFit.Create( Parameters, ChiSquareFunc );
> end;
>
> function FitSession(Parameters: TDynTJmFloatArray; ChiSquareFunc:
> TOFitFunc): IFit;
> var
> Params: array of PJmFloat;
> i: integer;
> begin
> SetLength(Params, Length(Parameters));
>
> for i := 0 to High(Parameters) do
> begin
> Params[i] := AllocMem(SizeOf(TJmFloat));
> Params[i] := @Parameters[i];
Don't you want to write here
Params[i]^ := Parameters[i];
?
> end;
>
> //debug only
> for i := 0 to High(Params) do
> ShowMessage('TDynTJmFloatArray ' + FloatToStr(Params[i]^));
>
> Result := FitSession(Params, ChiSquareFunc);
> end;
> begin
> SetLength(c, 2);
> c[0] := 2;
> c[1] := 0.2;
> Fit := FitSession(c, @ChiSquareFunc);
> end;
>
>
More information about the fpc-pascal
mailing list