(Moderator)
Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
Delphi 2006 Professional
|
Re: Untyped Parameter var Buf
3. Jun 2010, 11:59
Durch den Cast auf PChar wird die #0 als Ende der Zeichenkette angesehen. Wenn also irgendwo innerhalb deines Buffers eine #0 ist wird alles dahinter ignoriert. Genauso kann es umgekehrt richtig krachen wenn am Ende deines Buffers keine #0 vorkommt weil dann über den Buffer hinaus gelesen wird um entsprechend eine #0 zu finden und da kann es zur Zugriffsverletzung kommen.
Bei deiner Methode wird mitgegeben wie lang der Buffer ist. Diese Angaben solltest du auch nutzen.
Bytes von einem zum anderen Ort kann man mit move und copymemory kopieren. Der Typ ist in beiden Fällen irrelevant (im Gegensatz zu deinem PChar)
[Edit]
Anstelle von "len" wäre die bessere Bezeichnung "size". Denn len steht für eine Anzahl an Elementen und da spielt es eine Rolle um welchen Typ es sich handelt was deinem Untyped Parameter widerspricht. Size hingegen gibt die Größe an und nicht die Anzahl der Elemente was somit bei Parametern deren Typ keine Rolle spielt zu bevorzugen ist.
Jens Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
|