Thema: Delphi TObject und extended

Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#7

Re: TObject und extended

  Alt 18. Mai 2010, 11:10
Naja ich selber würde das nicht in einen String unwandeln, wenn du schon die Quellzahl vorliegen hast.

Wenn du dich nicht an die Pointer traust, nehm die Klasse, aber die erzeugt einiges an Overhead. Ansonsten machst du das mit Pointern, wie ich das Vorgeschlagen habe. Dann nehme dir zwei/drei Methoden:
Delphi-Quellcode:
procedure SetExtended(AList : TStrings; AIndex : Integer; AExtended : Extended);
var
  p : PExtended;
begin
  p := PExtended(AList.Objects[AIndex]);
  if p = nil then
  begin
    New(p);
    AList.Objects[AIndex] := TObject(p);
  end;
  p^ := AExtended;
end;

function GetExtended(AList : TStrings; AIndex : Integer) : Extended;
var
  p : PExtended;
begin
  p := PExtended(AList.Objects[AIndex]);
  if p = nil then
  begin
    raise Exception.CreateFmt('Index ' + IntToStr(AIndex) + ' is not set!');
  end;
  Result := p^;
end;

procedure ClearList(AList : TStrings);
var
  i : Integer;
  p : PExtended;
begin
  for i := 0 to AList.Length - 1 do
  begin
    p := PExtended(AList.Objects[i]);
    if p <> nil then
    begin
      Dispose(p);
      AList.Objects[i] := nil;
    end;
  end;
end;
Wichtig ist nur, dass du beim zerstören der StringList die Methode ClearList aufrufst, damit da keine Speicherlecks entstehen.

MfG
Fabian
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat