Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#26

Re: PChar: Zeichen rechts abschneiden?

  Alt 19. Aug 2005, 07:10
Den scheinbaren Widerspruch in den beiden von mir zitierten Aussagen möchte ich dann doch noch erklären:

Mit "klar doch" wollte ich zum Ausdruck bringen, dass dich der Compiler bei der Programmerstellung nicht daran hindert Zugriffe außerhalb deines strings zu machen. Das ist gewissermaßen die "innere" Sicht. Ich habe ja auch geschrieben, wo du da eventuell landest. Zur Verdeutlichung ein Stück Code aus vergangenen Zeiten:

Delphi-Quellcode:
function AllocString(size: cardinal): PChar;
var
  pCard: ^Cardinal;
begin
  pCard := AllocMem(size + 2 * SizeOf(Cardinal));
  pCard^ := size;
  Inc(pCard);
  pCard^ := 0; // length
  Inc(pCard);
  Result := Pointer(pCard);
end;
In meinem späteren Beitrag habe ich die "äußere" Sichtweise eingenommen. Die Funktionen zum Umgang mit sz-strings und big strings basieren auf Konventionen - nach dem terminierenden #0 ist der string zu Ende und vor dem string liegender Speicher ist tabu. Man hält sich daran oder man weiß ganz genau was man da tut. Klar, dass systemnahes Programmieren mitunter auch zu implementationsabhängigem Code führen kann. Du solltest sowas aber weitgehend vermeiden.

Viel Spaß noch beim Arbeiten mit Zeigern.

marabu

PS: hast du der Schildkröte ein i geklaut oder ist das ein falscher Verdacht von mir?
  Mit Zitat antworten Zitat