Thema: Delphi Code Optimierung

Einzelnen Beitrag anzeigen

Benutzerbild von Diamondback2007
Diamondback2007

Registriert seit: 2. Feb 2007
260 Beiträge
 
Delphi 2007 Professional
 
#25

Re: Code Optimierung

  Alt 22. Jul 2008, 10:59
Achs
Zitat von alzaimar:
Zitat von Diamondback2007:
So, ich hätte jetzt folgenden Code:
...
Sollte das so klappen?
Nein. Du willst die Adresse der lokalen Variablen speichernm aber tmpPZN wird jedesmal verändert. Entweder Du veränderst die Hashmap, sodaß sie bei einem gefundenen Schlüssel die Data-Information gleich überarbeitet, oder Du erzeugst jedesmal Dir dynamisch einen Integer:
Mach es so:
Delphi-Quellcode:
Type
  PInteger = ^Integer;

Var
  Data : PInteger;
  sID : String;

for i := 0 to sl.Count - 1 do Begin
  tmpPZN := StrToInt32_JOH_IA32_7_a(ExtractPZN(sl.Strings[i]));
  sID := ExtractID(sl.Strings[i]);
  if not StringDic.Find(sID, Pointer (Data)) then begin
    New (Data);
    Data^ := tmpPZN;
    StringDic.Add(sID, Data);
  end
  else
    Inc(Data^, tmpPTN);
end;
Achtung! Hinterher aber die Data wieder mit Dispose freigeben! Dazu wanderst Du per 'First/Next durch die Hashmap und gibst einzeln die gelieferten Data wieder frei.
Delphi-Quellcode:
StringDic.First;
While StringDic.Next (sID, PInteger (Data)) Do
  Dispose (Data);
Große Arrays erzeugt man übrigens dynamisch.
Delphi-Quellcode:
Var
  BigArray : Array Of Integer;

Begin
  SetLength(BigArray, 10000000);

Okay vielen Dank erst einmal Dann werde ich mich mal damit beschäftigen
Wenn man das Array dynamisch erzeugt klappts dann auch größer oder was?
Fabian E.
  Mit Zitat antworten Zitat