AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Pos liefert letztes statt erstes Vorkommen! HILFE!
Thema durchsuchen
Ansicht
Themen-Optionen

Pos liefert letztes statt erstes Vorkommen! HILFE!

Ein Thema von Schubi · begonnen am 5. Mai 2004 · letzter Beitrag vom 5. Mai 2004
Antwort Antwort
Schubi

Registriert seit: 4. Nov 2003
Ort: Happurg (Nürnberg)
331 Beiträge
 
Delphi 2006 Professional
 
#1

Pos liefert letztes statt erstes Vorkommen! HILFE!

  Alt 5. Mai 2004, 08:50
Hi!
Ich werds kurz erklären...
Hab nen String wo mehrmals '<quote>' und '</quote>' vorkommt.
Dann mach ich das:
Delphi-Quellcode:
Pos1 := Pos('<quote>',S);
Pos2 := Pos('</quote>',S);
S := Copy(S,Pos1,Pos2);
Text := StringReplace(Text,S,'',[rfIgnoreCase]);
Leider gibt das 2. Pos das letzte Vorkommen von '</quote>' zurück, und nicht das erste, S enthält also dann den kompletten Text vom 1. '<quote>' bis zum allerletzten '</quote>'

Was mach ich falsch?
Habt ihr evtl ne bessere Idee?
Christian Schubert
Ich fange gerade erst an, den Umfang meiner Ahnungslosigkeit zu begreifen...
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Pos liefert letztes statt erstes Vorkommen! HILFE!

  Alt 5. Mai 2004, 08:55
Du hast den Copybefehl falsch verwendet. Du musst zuerst den String, dann die Startposition und die Anzahl zu kopierender Zeichen angeben, nicht die Endposition.
Korrekt müsste es also lauten:
S:= Copy(s,Pos1+7,Pos2-(Pos1+7)); [edit]Fehler bei der Länge korrigiert[/edit]
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Pos liefert letztes statt erstes Vorkommen! HILFE!

  Alt 5. Mai 2004, 08:58
du hast nen kleinen Denkfehler. Der Fehler liegt hier
S := Copy(S,Pos1,Pos2); Der dritte parameter gibt die länge an und nicht das ende
Wenn dein Text beispielsweise so aussieht
Code:
Irgendwas davor <quote>Kleiner Test, Bla irgendwas</quote>Irgendwas danach
Dann dann bewirtk dein copy das nicht nur so viel zeischen kopiert werden wie zwischen <quote> und </quote> sondern es werden auch noch die zeichen vor dem ersten quote dazu gezählt..
dein zweiter parameter müsste "Pos2 - Pos1" oder so heißen...

[Edit1]Ich werd alt, war schon wieder zu langsam [/Edit1]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Schubi

Registriert seit: 4. Nov 2003
Ort: Happurg (Nürnberg)
331 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Pos liefert letztes statt erstes Vorkommen! HILFE!

  Alt 5. Mai 2004, 09:06
*argh*
AUA!

10 Zeilen weiter oben steht er sogar richtig im Quellcode. Das sind so die Fehler die man net findet, weil sie zu trivial sind...

also

S := Copy(S,Pos1,Pos1-Pos2);

DANKE!

Umso lustiger, dass Copy gerade so viel bis zum allerletzten </quote> zurück gegeben hat. so ein zufall
Christian Schubert
Ich fange gerade erst an, den Umfang meiner Ahnungslosigkeit zu begreifen...
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: Pos liefert letztes statt erstes Vorkommen! HILFE!

  Alt 5. Mai 2004, 09:07
Sorry, aber wieder falsch...
Nicht:
S:=Copy(S,Pos1,Pos1-Pos2);
sondern
S:=Copy(S,Pos1,Pos2-Pos1);
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Schubi

Registriert seit: 4. Nov 2003
Ort: Happurg (Nürnberg)
331 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Pos liefert letztes statt erstes Vorkommen! HILFE!

  Alt 5. Mai 2004, 09:12
Ja, klar. Danke. Is schon klar, war doch hier nur so auf die Schnelle reingeschrieben. Ganz so blöd bin ich dann doch nicht
Christian Schubert
Ich fange gerade erst an, den Umfang meiner Ahnungslosigkeit zu begreifen...
  Mit Zitat antworten Zitat
roderich
(Gast)

n/a Beiträge
 
#7

Re: Pos liefert letztes statt erstes Vorkommen! HILFE!

  Alt 5. Mai 2004, 11:12
Zitat:
S:=Copy(S,Pos1,Pos2-Pos1);
das kopiert ein Zeichen zuwenig. richtig ist

S:=Copy(S,Pos1,Pos2-Pos1 + 1);

Roderich
  Mit Zitat antworten Zitat
Schubi

Registriert seit: 4. Nov 2003
Ort: Happurg (Nürnberg)
331 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Pos liefert letztes statt erstes Vorkommen! HILFE!

  Alt 5. Mai 2004, 11:43
Zitat von roderich:
Zitat:
S:=Copy(S,Pos1,Pos2-Pos1);
das kopiert ein Zeichen zuwenig. richtig ist

S:=Copy(S,Pos1,Pos2-Pos1 + 1);

Roderich
Ich zähl eh noch was dazu, um das quote selber gleich mit zu erwischen
Christian Schubert
Ich fange gerade erst an, den Umfang meiner Ahnungslosigkeit zu begreifen...
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:00 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