Hallo Luckie!
Du setzt den String am Anfang auf die richtige Länge. Soweit, so gut - ist auch zu empfehlen, da das ständige Verlängern des Strings (dynamisches Array) ja den Speicher vollmüllt.
Allerdings kopierst Du dann mit
foo := foo + IntToHex(dummy, 8) + ' ';
die Werte nicht in den String, sondern dahinter!
In Pascal ist das nicht so möglich, wie Du willst - in SIMULA ging das, weil es da eine String-Position gibt.
Du mußt schon den Wert ab der richtigen Position in den String kopieren!
Entweder mit einer Schleife:
Delphi-Quellcode:
neu := IntToHex(dummy, 8) + ' ';
for position := 1 to 8 do
foo [i * 8 + position] := neu [position];
(Dir brauche ich die Variablentypen ja nicht zu erklären, oder?)
oder durch direktes Speicherkopieren:
Delphi-Quellcode:
neu := IntToHex(dummy, 8) + ' ';
Move (neu [1], foo [i * 8 + 1], 8);
Das in dem String ansonsten Müll steht, ist logisch: das SetLength setzt nur die Länge, initialisiert das Ganze aber nicht. Eventuell sollte also auf SetLength noch ein FillChar folgen - ist abe hier unnötig, da die Programmlogik den reservierten Bereich vollständig füllt.
Allerdings habe ich mit Deiner Frage ein kleines Problem:
Willst Du uns testen - oder warst Du beim Proggen nicht gerade gut drauf? Von
Dir hätte ich sonst so eine Frage nicht erwartet!
Gruß
Dietmar Brüggendiek