Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit Ansipos und AnsiReplaceStr (https://www.delphipraxis.net/98584-problem-mit-ansipos-und-ansireplacestr.html)

richard_boderich 29. Aug 2007 12:19


Problem mit Ansipos und AnsiReplaceStr
 
Hallo allerseits!

Ich habe ein Problem zu dem ich keine Lösung finde. Ich habe ein Buffer der einen langen Ansistring enthält.
Ich habe aber das Problem, das Ansipos, nicht wie sein Pedant(Pos bzw. PosEx), bei mehrmaligem Aufruf, nicht ab der alten Fundstelle weitersucht, sondern immer von vorn anfängt. Er findet also immer nur den ersten String. Ich habe dann probiert, mittels AnsiReplaceStr den Text bis zur ersten Fundstelle zu löschen. Das funktioniert jedoch nicht, weil diese Funktion ALLE String-Vorkommen löscht. Ich habe mir auch noch SearchBuff angeschaut, das mit Pointern
arbeitet, die Delphi Hilfe sich jedoch zu Mehrfachvorkommen nicht äußert.

Habe jetzt aus Verzweiflung alle in ein Memo kopiert und versuche alls Zeichen bis zum Index X zu löschen, aber damit komme ich auch nicht wirklich weiter.

Kennt da jemand eventuell eine Funktionen die ich verwenden koennte?

Gruß Richard

marabu 29. Aug 2007 12:40

Re: Problem mit Ansipos und AnsiReplaceStr
 
Hallo Richard,

du verwendest Ansi-Funktionen, weil du UTF-8 Texte durchsuchen willst? Wie groß sind diese Texte? Sind das einfache Suchmuster sprich Literale? Auch dann kannst du PosEx() verwenden, du musst nur den Suchbegriff zuerst nach UTF-8 wandeln.

Freundliche Grüße

richard_boderich 29. Aug 2007 12:53

Re: Problem mit Ansipos und AnsiReplaceStr
 
Hi Marabu :)

Also der Gesamttext hat ein paar Kilobyte. Die Ansifunktionen verwende ich eigentlich nur, weil der Compiler meckert, wenn ich in Pos bzw. PosEx einem zu durchsuchenden String > 255 Zeichen angebe, also im buffer suchen will. Ja der Text enthält auch UTF-8 Strings, jedoch suche ich nicht nach UTF-8.
Der Suchtext ist ein normaler String mit einer Länge von 5-55 Zeichen.

Gruß Richard

marabu 29. Aug 2007 13:30

Re: Problem mit Ansipos und AnsiReplaceStr
 
Hi Richard,

der zu durchsuchende Text darf größer als 255 Stellen sein. Das Meckern des Compilers kann eigentlich nur daher kommen, dass du ein Literal mit mehr als 255 Stellen suchen möchtest. Du kannst mehrere Literale zu einem String verketten um diese Beschränkung zu umgehen. Wenn es das nicht ist, müsstest du mal etwas Code zeigen.

Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:38 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