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);