Auch wenn ich mich ungern in die Schussbahn einer so hitzigen Diskussion begebe, wollte ich es trotzdem los werden:
Es hat bei ihm (im speziellen Fall) funktioniert.
Die zweite Zeile in
AContext.Connection.IOHandler.Write
sieht so aus:
LLength := IndyLength(ABuffer, ALength, AOffset);
.
Und die zweite Zeile der Funktion IndyLength enthält wiederum das:
LAvailable := IndyMax(Length(ABuffer)-AIndex, 0);
Hier wird also auf die Länge des dyn. Arrays mittels Length zugegriffen. Das das gut geht ist reine Glückssache ...
Dein Code funktioniert also, sofern man die Funktion selbst geschrieben hat und auf Length verzichtet. Allgemein ist es aber leider eine tickende Zeitbombe ...