title image


Smiley Kopie eines Array... ?
Hallo zusammen,



ich habe ein LOKALES Array of Integer, von dem ich nciht weiß wie lang es ist (zur Entwickluingszeit), jetzt brauche ich eine Kopie, afu die andere funktionen zugreifen können, auch wenn das Original schon weg is. Ich hab das folgender Massen zu lösen versucht:



// erzeugt ein PIntArray, speichert die übergebenen Daten da rein und

// gibt einen Zeiger darauf zurück!

function CreateArrayOfInt(source: TIntArray): PIntArray;

var

res: PIntArray;

begin

GetMem(res, length(source)*sizeOf(Integer));

SetLength(res^, Length(source));

res^ := Copy(source, 0, Length(source));

result := res;

end;



Klein, einfach und in meinen Augen auch richtig, leider sieht mein Rechner das anders. Nicht immer, aber immer an einer anderen Stelle. Und zwar liegt das problem genau Hier -->SetLength(res^, Length(source));<-- udn heißt AccessViolation. Wohl (wie ich das sehe) abhänig was vorher in dem Speicher stand, den ich mir reserviere. In den meisten Fällen geht es gut (wird dann warscheinlihc zu viel Speicher reserviert) aber hin und wieder geht es schief!



Warum? Und was kann ich sinnvolles dagegen tun? Nach Möglichkeit sollte die lösung auch ein bisschen Ausführ-geschwindikeit-optimiert sein, da die ca 20.000mal ausgeführt wird! Udn mein programm soll ja auch auf einem 133ger ncoh laufen!



Sorry wenn ich mich etwas kompliziert ausdrücke,, bin schon müde...



danke!

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: