Einzelnen Beitrag anzeigen

Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#25

Re: PChar: Zeichen rechts abschneiden?

  Alt 18. Aug 2005, 22:46
@bigg: Guck ich mir an, danke
@Dax: Danke für die Info.

@marabu: auf irgendeinzeichen davor Ich denke ja das wir nichtmehr im string sind wenn wir unter dem ersten zeichen sind oder?

So sah meine Funktion aus, die alle Zeichen links gelöscht hat:

Delphi-Quellcode:
function StripCharsLeft(const S: string; CharSet: TCharSet): string;
var
  PResIdx: PChar;
  PSIdx: PChar;
  Idx: Integer;
  SLen: Integer;
begin
  SetLength(Result, Length(S));
  if S <> 'then
  begin
    PResIdx := @Result[1];
    PSIdx := @S[1];
    Idx := 0;
    SLen := Length(S);
    while (PSIdx^ <> #0) and (PSIdx^ in CharSet) do
    begin
      Inc(PSIdx);
      Inc(Idx);
    end;
    if PSIdx^ <> #0 then
    begin
      CopyMemory(@Result[1], PSIdx, SLen-Idx);
      SetLength(Result, SLen-Idx);
    end;
  end;
end;
Die wollte ich nun nochmal (selbst) so schreiben, das rechts gelöscht wird statt links, aber da wir ja am Anfang des Strings kein #0 Zeichen haben, bin ich daran bis jetzt gescheitert :\

Zitat:
Dein Code darf beim Arbeiten mit Zeigern weder unbeabsichtigt (Fehlerfall), noch bewusst (Erfolg durch Nebenwirkung) auf "solche" Speicherbereiche zugreifen.
Jo, ich dachte nur man darfs, wegen:

Zitat von marabu:
Klar doch
Oder war das Ironie?

Danke auch Dir
Mario
  Mit Zitat antworten Zitat