strmOutput.position := 0;
Buff := Stralloc(strmOutput.Size + 1);
strmOutput.readbuffer(Buff[0], strmOutput.Size);
(Buff + strmOutput.Size)^ := chr(0);
SetString(Str, Buff, strmOutput.size);
strdispose(Buff);
OK. Ich versuche zu verstehen.
1. Stream an Anfang setzen
2. Buffer (String) auf die Länge von StrmOutput deklarieren und den Speicher dafür reservieren. Eigentlich verstehe ich die Stralloc Function nicht wirklich.
Laut Hilfe ist die function auch veraltet weil die PAnsiStrings schon nullterminiert sind.
3. verrstehe ich nicht. Da es ohne Schleife läuft verstehe ich es so als ob immer nur ein Wert erfasst wurde, weil der Wert bis auf die Länge immer als ein wert ausgelesen wird. (Dem ist aber nicht so. Denke ich)
4. Hier wird der String eben nullterminiert (Verstehe ich nicht wirklich warum es so sein muss. Den Speicher habe ich doch schon reserviert.)
5. Das wäre eigentlich klar, ich komme aber wieder zu dem Punkt wo es keine Schleife gibt. Deshalb passt mir das nicht wirklich. Obwohl verständlich.
6. Unwichtig weil es mit StrAlloc zusammenhängt.
(
StrDispose dient der Rückwärtskompatibilität.
StrDispose entfernt einen String vom Heap, der zuvor mit
StrAlloc oder
StrNew zugewiesen wurde. )
Somit habe ich meine Probleme mit der Verständnis etwas genauer geschildert.
Ich habe die Hilfe dazu genau gelesen, leider will es nicht in mein Kopf rein.
Ich hoffe noch auf genauere Erklärung. Sonst muss ich mir mehr Beispiele anschauen. Bis jetzt war es ohne Internet leider schlecht möglich.