Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mit Pos im String suchen, was weiter? (https://www.delphipraxis.net/3826-mit-pos-im-string-suchen-weiter.html)

Seikilos 1. Apr 2003 16:19


Mit Pos im String suchen, was weiter?
 
Pos gibt ja das erste auftreten eines teilstrings im string an, aber was ist mit den weiteren, wenn ich das erste aufkommen nicht ändern möchte, wie finde ich das 2te, 3te, 4te ... n-te?

Luckie 1. Apr 2003 16:57

Abschneiden.

Seikilos 1. Apr 2003 17:00

oha, wie effektiv, ich glaub dann lauf ich den string mit ner For schleife durch...

Hellcat 1. Apr 2003 17:01

Das ist zwar nicht die eleganteste Variante, aber sie erfüllt ihren Zweck:
Delphi-Quellcode:
procedure zeichenzaehlen;
var zaehler,zahl, Ende:integer;
    text:string;
    zeichen: char;
begin
  text := {hier musst Du die Quelle angeben};
  zeichen := {hier gibst Du das Zeichen an nach dem gesucht werden soll};
  zahl := 0;
  Ende := {hier steht bis zum wie vielten Zeichen gezählt werden soll}
  for zaehler := 1 to length (text) do
  begin
    if text[zaehler] = zeichen then inc(zahl);
    if zahl=ende then exit  
  end;
end;
Das klappt aber nur für recht kurze Zeichenketten, bei größeren Texten ist das zu rechenaufwendig

Seikilos 1. Apr 2003 17:01

wie gesagt :D

Luckie 1. Apr 2003 17:19

OK, du willst was effektives? Dann pack den String in einen PChar und wander mit dem Pointer durch die Zeichenkette. Ungefähr so (jetzt mal ungetestet):
Delphi-Quellcode:
var
  p : PChar;
  i : Integer;
begin
  i := 0;
  // Eventuell noch Speicher reservieren
  p := 'Hello World, good-bye universe.'
  while (p^ <> #0) do
  begin
    if p^ = #32 then Inc(i);
    Inc(p);
  end;

sakura 1. Apr 2003 21:52

Wie wäre es mit einem Blick in die CodeLibrary Leute :?:

http://www.delphipraxis.net/viewtopic.php?t=154

...:cat:...

Seikilos 2. Apr 2003 13:37

es gibt ein unterschied zwischen quantität und qualität.
Der Code sprengt den größen-rahmen um einiges

sakura 2. Apr 2003 13:46

Was genau meinst Du? Der basiert auf der Orignal-Pos Funktion von Delphi und ist flexibel einsetzbar. Zudem auch recht zügig ;-) Assembler ist halt etwas länger.

...:cat:...

Seikilos 2. Apr 2003 13:49

ja, das mein ich, es lohnt sich für mich nicht, soviel code zunehmen, während das resultat nur sehr klein ist.

Mich reizt Delphis string verarbeitung sowieso. Z.b ist es auf einfachem wege auch nicht möglich die anzahl der As oder Bs in einem String möglichst leicht zu zählen. an dem problem sitz ich schon seit gestern. die einzige delphi methode is einfach nur mit pos immer suchen, rest abschneiden, nochmal suchen, da leided die effizienz.
und for ist auch nicht so programmier geschickt


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:55 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz