Einzelnen Beitrag anzeigen

Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#2

Re: Stringlänge setzen, dann füllen

  Alt 10. Jun 2004, 02:11
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
Dietmar Brüggendiek
  Mit Zitat antworten Zitat