Einzelnen Beitrag anzeigen

Benutzerbild von Pichel
Pichel

Registriert seit: 25. Feb 2005
Ort: Kassel
65 Beiträge
 
Delphi 7 Professional
 
#1

Re: StringReplace und doppelte Leerzeichen

  Alt 12. Apr 2006, 13:25
Also mit diesem Thread habt Ihr mir schon ungemein geholfen.

Aber wo schon so ein Millisekungen-Run entstanden ist habe ich da noch eine Aufgabe

Vorab, ich werte eine relativ große Webseite bzw. deren Html-code aus.
Dafür ist es nötig bestimmte Stellen zu finden, genauer der String der zwischen StringA und StringB steckt.
Da ich diese zwei, ich nenne sie mal IdentifierungsStrings aus einer ini lese habe ich sie dort mit einem "|" getrennt...
Daher musste ich auch einen String um alle doppelten Leerzeichen erleichtern sowie alle #9 #10 #13 entfernen damit die Identifzierung zuverlässiger ist.

So... nun hab ich mir also nen Funktion gebastelt die sehr häufig aufgerufen wird und bestimmt aufgrund der vielen Pos, Copy und Delete Befehle nicht gerade schnell ist.
als Variable "s" übergebe ich den Quelltext zB 'Mein Benutzername hier im Forum ist Pichel, mal so als Beispieltext.'
und als var "ids" den Identifizierungsstring zB 'Mein Benutzername hier im Forum ist |,'
Die Funktion liefert nun 'Pichel' als Result zurück und der Html-Quelltext ist gekürzt auf ' mal so als Beispieltext.'

Ich hoffe das war soweit zu verstehen... und hier nun der Code auf das ich noch was lernen kann

Delphi-Quellcode:
function GetDataSet(var s: String; ids: String): String;
var id1, id2: String;
begin
  Result := '';
  if Pos('|',ids) > 0 then begin // IDs splitten
    id1 := copy(ids, 1, pred(Pos('|',ids)));
    id2 := copy(ids, succ(Pos('|', ids)), length(ids));
  end else begin
    id1 := '';
    id2 := ids;
  end;
  if (id1 = '') or (Pos(id1, s) > 0) then begin
    if id1 <> 'then delete(s,1,pred(Pos(id1, s)+length(id1)));
    if (Pos(id2, s) > 0) then begin
      Result := trim(copy(s, 1, pred(Pos(id2, s))));
      delete(s,1,pred(Pos(id2, s)+length(id2)));
    end;
  end;
end;
Grüße aus Kassel.

Konfuzius sprach: Etwas lernen und sich immer wieder darin üben - schafft das nicht auch Befriedigung?
  Mit Zitat antworten Zitat