AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Doppelte Zeichen löschen

Ein Thema von Pseudemys Nelsoni · begonnen am 10. Mai 2005 · letzter Beitrag vom 10. Mai 2005
 
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Doppelte Zeichen löschen

  Alt 10. Mai 2005, 16:03
Moin,

Nehmen wir mal an ich habe folgenden String:

Zitat:
...blah...blubb..irgendwas..
und ich möchte eine Funktion schreiben, die doppelte "." löscht und die aussen auch...wie könnte ich das _schnellst_möglich machen?

Also das es nachher so aussieht:

Zitat:
blah.blubb.irgendwas
Ich hatte es schon so:

Delphi-Quellcode:
function FmtTok(const S: string; const C: Char): string;
var
  B: Boolean;
  I: Integer;
  ResLen: Integer;
begin
  Result := '';
  if S <> 'then
  begin
    B := True;
    for I := 1 to Length(S) do
    begin
      if (S[I] <> C) or ((S[I] = C) and (not B)) then
        Result := Result + S[I];
      B := S[I] = C;
    end;
    ResLen := Length(Result);
    if Result[ResLen] = C then
      SetLength(Result, ResLen-1);
  end;
end;
Das funktioniert auch, aber ich möchte es optimieren. Das "Result := Result + S[I];" dürfte wohl den langsamsten Teil ausmachen... Wie könnte ich das ganzen nun mit PChars hinkriegen?

Ich habs so versucht (*g*):

Delphi-Quellcode:
function FmtTok(const S: string; const C: Char): string;
var
  SPtr, ResPtr: PChar;
  SI: Integer;
  B: Boolean;
begin
  SetLength(Result, Length(S));
  if S <> 'then
  begin
    SPtr := @S[1];
    ResPtr := @Result[1];
    SI := 1;
    B := True;
    while SPtr <> #0 do
    begin
      if (SPtr^ <> C) or ((SPtr^ = C) and (not B)) then
      begin
        ResPtr := SPtr;
        Inc(ResPtr);
      end;
      B := SPtr^ = C;
      Inc(SI);
      Inc(SPtr);
    end;
    if ResPtr^ = C then
      SetLength(Result, Length(Result)-1)
    else SetLength(Result, Length(Result));
  end;
end;
Nicht schimpfen! Das ist erst mein erster Versuch mit PChars zu arbeiten! *g*

Naja der Code(letzterer) funktioniert nicht, gibt ewig Exceptions... jemand ne Idee was verkehrt ist? =[
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz