-
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
21. Jul 2010
ach mißt, das läßt sich ja garnicht editieren :wall:
(und das fehlende -Tag fällt auch auf ... also bezüglich der nicht mehr geparsten Format-Tags :? )
@Mods: Arbeit für euch > Anhänge dieses Post im ersten Post hochladen
Anhänge wurden nun nach Beitrag #1 kopiert, drum lösch ich sie hier mal wieder
-
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
21. Jul 2010
joar, da stimmt was nicht.
tausch mal die 1 gegen eine 0 aus Result := NewPattern
oder besser so ... ich denk mal das wäre logischer, wenn der Letzte, anstatt der erste Eintrag genutzt würde.
Function GetNewPatt(i: Integer): String;
Begin
If i < Length(NewPattern) Then Result := NewPattern
Else If Length(NewPattern) > 0 Then Result := NewPattern
Else Result := '';
-
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
10. Jun 2010
Jupp, wenn dieses der letzte Fund ist, dann wird versuchst den restlichen nachfolgenden String in das Result zu kopieren.
Der selbe Fehler sollte also auch auftreten, wenn der Pattern mehrfacht direkt hintereinander liegt.
Ohne Bereichsprüfung passiert da eigentlich auch nichts, da Move mit einer Länge von 0 aufgerufen würde,
aber mit Bereichsprüfung bekommt diese natürlich mit, daß der...
-
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
10. Jun 2010
Jupp, genau sowas hatte ich grade verbaut.
Hach ja, der Fehler ist in meinem aktiven Code nie aufgefallen,
aber dazu sei vielleicht erwähnt, daß der Originalcode eine andere Stringverwaltung via PChar besitzt. :oops:
ähhhh ... ich würde es ja gerne Anhängen, aber das geht nicht. :shock:
Also bitte vor alle "Move" das "if i4 <> 0 then " einfügen.
-
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
10. Jun 2010
Das hatte ich vorhin auch zum Testen verwendet. :gruebel:
Welche Version nutzt du denn?
Die _300 aus Beitrag #1 sollte die aktuellere Version 1.1 vom 20.11.2009 22°° sein.
(is'n bissl blöd, das mit den nun fehlenden Attachment-Kommentaren und den veränderten Dateinamen)
Ich teste gleich nochmal 'n bissl rum.
(bin grade auf die Idee gekommen mal wieder die Bereichsprüfung zu aktiveren...
-
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
10. Jun 2010
Hmmm, hast du mal einen TestString parat?
Mir ist grade aufgefallen, daß in meinem Testcode das Pattern auch schon am Ende des Strings liegt.
und ebenso hier tritt kein Fehler auf.
S := '123Wort';
S2 := StringReplace(S, 'Wort', 'xxx', );
-
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
22. Nov 2009
Im Post #1 wurde noch eine neuer Abschnitt eingefügt ... siehe "Ein Vorteil der gemeinsamen Ersetzung:"
'Old1' => '<New1 Old2>'
'Old2' => '<New2 Old1>'
Text old1 old2 Old1 Old2 old1 old2 Old1 Old2 Text
Text old1 old2 <New1 Old2> <New2 Old1> old1 old2 Old1 Old2 Text
Text old1 old2 <New1 <New2 Old1>> Old2 old1 old2 Old1 Old2 Text
-
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
21. Nov 2009
//Ohne Flags = Nur DER erste Fund und Case Sensitive
ergebnis := StringReplaceX(dummy, , , );
Memo.Lines.Add('StringReplaceX('+dummy+', , , )');
Memo.Lines.Add(' '+ergebnis);
Assert(ergebnis='Text New1 Old2 old1 old2 Old1 Old2 old1 old2 Text');
es wird nur der ERSTE Fund ersetzt,
//Ohne Flags = Nur DER erste Fund und Case Sensitive
ergebnis := StringReplaceX(dummy, , , );...
-
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
20. Nov 2009
finally
// Clean up
Finalize(Positions);
Finalize(Patterns);
end;
Dieses kannst'e dir eigentlich sparen, denn Delphi hat für dynamische Arrays, Strings und Interfaces ein automatisches und exceptionsicheres Finalize (im "End;" der Funktion) eingebaut. :angel:
. // Clean up
Finalize(Positions);
except
-
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
20. Nov 2009
Deine ist gut nochmal doppelt so schnell
1000 Wörter, 13386 Zeichen
0.08 ms
15 ms
10000 Wörter, 134623 Zeichen
0.72 ms
1281 ms
100000 Wörter, 1351083 Zeichen
-
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
20. Nov 2009
hier nur noch ein kleiner Test dazu
Program Project1;
{$APPTYPE CONSOLE}
Uses Windows, SysUtils, StrRep;
Var C: Integer = 10000;
Var i, i4: Integer;
-
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
20. Nov 2009
Code-Library -> Object-Pascal / Delphi-Language -> Ersatz für StringReplace
Bei sakuras Code fehlt das Highlighting
und dann könnte man bitte mal bei seinem Code die AnsiString durch String ersetzen.
Der Code ist für Unicode geeignet, aber so ist er nur Ansi und ab D2009 ist das verwendete POS Unicode.
(AnsiString + Uniode-Pos = ständige Stringumkodierungen)
Die nachfolgenden 3 Beiträge...