Toon posts:

[DELPHI] Gedeelte tekst zoeken

Pagina: 1
Acties:
  • 136 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb een html bestand met daarin allerlei nummers tussen de tekst.
Deze nummers staan tussen <[if !supportFootnotes]> en <[endif]>

Deze html file heb ik in Memo1 geladen.
Nu heb ik in memo2 een lijst met tekst welke in de plaats moet komen voor de nummers. (Regels zijn genummerd en komen overeen met het nummer in de tekst)

Hoe zoek ik <[if !supportFootnotes]> [1] <[endif]> op in de tekst? en hoe plak ik een stuk tekst hieroverheen? (wat in memo2 staat?)

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Wat heb je zelf bedacht?

Stel, je hebt onderstaande info in je memo:
code:
1
2
3
4
1. bla
2. blo
3. <[if !supportFootnotes]> [1] <[endif]>
4. bli


Hoe denk je zelf je prog te maken, zodat ie weet dat ik regel 3 iets 'bijzonders' staat , en in de overige regels niet? Denk daar eerst eens over.

Siditamentis astuentis pactum.


Verwijderd

Topicstarter
Het probleem is dat het niet aan het begin staat van de regel.
Met een for loop kan ik de gehele tekst wel door lopen..
en waarschijnlijk zal het met copy functie moeten oid....

Normaal zoek ik het forum even door en vind wel een antwoord. Maar ja search doet het niet, Ik ben wat dat betreft een redelijke newbie @ delphi...

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Kom nou, je hebt toch wel een idee hoe je
"string met daarin iets wat ik zoek, namelijk: <[if !supportFootnotes]> [1] <[endif]>"
met
"<[if !supportFootnotes]> [1] <[endif]>"
kunt matchen?

Siditamentis astuentis pactum.


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

heeft niets met delphi te maken meteen. schrijf het eerst eens in pseudo code op en zoek dan de specifieke Delphi commando's op.

We adore chaos because we like to restore order - M.C. Escher


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10:45

Creepy

Tactical Espionage Splatterer

Kijk eens in de Delphi help (de index) en zoek dan eens naar "String Functions" en "String Handling routines", daar staan een aantal hele mooie functies tussen.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Varienaja schreef op 12 augustus 2002 @ 16:40:
Kom nou, je hebt toch wel een idee hoe je
"string met daarin iets wat ik zoek, namelijk: <[if !supportFootnotes]> [1] <[endif]>"
met
"<[if !supportFootnotes]> [1] <[endif]>"
kunt matchen?
nee, anders vraag ik het niet lijkt mij :? .....ik zei toch al dat ik van Delphi niet zoveel afweet......
Ik gebruik het ook niet zovaak maar zit met een probleem dat ik al die tekst in moet voegen en me dat anders een week of meer gaat kosten terwijl ik dit zo met een redelijk simpel programmatje kan oplossen. Alleen sommige dingen kom ik dan niet op..... en dan raadpleeg ik dit forum over het algemeen........

Een stuk vervangen krijg ik wel voorelkaar:
code:
1
2
3
Memo1.Text := StringReplace(Memo1.Text, 
'<![if !supportFootnotes]>'  , 'blablablablablablablablablabla', 
[rfReplaceAll, rfIgnoreCase]);



het kan zijn dat de "[1]" best op de volgende regel staat maar hij staat tussen <![if !supportFootnotes]> en <![endif]> in en dat kan op meerdere regels zijn.
De nummers lopen op van 1 tot soms over de 500
in de andere memo staat achter het nummertje de tekst die er dan in moet......
Heb al van alles nagezocht maar kom er gewoon ff niet op......

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Ik zou alle regels aan elkaar plakken, zodat je geen gedoe meer hebt met stukken die soms op 1, soms op 6 regels staan.

Ik zou zoeken naar "<![if !supportFootnotes]>", onthouden op welke index (i) dat ding voorkomt, en dan zoeken naar de bijbehorende "<[endif]>". Onthouden welk getal (g) er tussen stond, en onthouden hoeveel karakters (x) dat allemaal is.

Vervang de x karakters vanaf index i door de regel op lijn g in je tweede memo.

En dan van voor afaan totdat je alles gehad hebt.

en zeg nou niet dat jij dat niet had kunnen bedenken

Siditamentis astuentis pactum.


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Ah, je verzint er elke keer weer wat belangrijk nieuws bij :)
Tja, het verhaal wordt anders als het over meerdere regels verdeeld kan zijn. Maar nog heb ik niet de indruk dat je alles verteld heb :p

Toch ik denk dat je genoeg losse oplossingen hebt, je moet het alleen even samenvoegen. StringReplace is een functie die je misschien wilt gebruiken. Of Pos om alleen te zoeken en niet te vervangen. Creepy heeft je naar de juiste help pagina gestuurd waar je gereedschap staat. Nu moet je er alleen mee aan de gang.

Ik denk niet dat we precies kunnen vertellen wat je moet doen, simpelweg omdat je het ons niet verteld heb wat je _precies_ wilt doen. Het lijkt me ook niet gepast om het precies door ons te laten uitkauwen. Als je er nog niet uit komt moet je even een specifieke vraag stellen die niet op 101 manieren gelezen kan worden. :)

We adore chaos because we like to restore order - M.C. Escher


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Trouwens. Over meerdere regels maakt niet uit. TMemo.Text geeft alles in 1 lange string en de string functies trekken zich niets aan van enters. Daar lezen ze gewoon overheen

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
Varienaja schreef op 12 augustus 2002 @ 19:03:
Ik zou alle regels aan elkaar plakken, zodat je geen gedoe meer hebt met stukken die soms op 1, soms op 6 regels staan.

Ik zou zoeken naar "<![if !supportFootnotes]>", onthouden op welke index (i) dat ding voorkomt, en dan zoeken naar de bijbehorende "<[endif]>". Onthouden welk getal (g) er tussen stond, en onthouden hoeveel karakters (x) dat allemaal is.

Vervang de x karakters vanaf index i door de regel op lijn g in je tweede memo.

En dan van voor afaan totdat je alles gehad hebt.

en zeg nou niet dat jij dat niet had kunnen bedenken
Bedenken wel, uitvoeren niet.....that's the problem, kom er zo niet helemaal uit, zal kijken of het mischien op een andere manier kan....

Verwijderd

Topicstarter
Ik ben eruit, heb met ander programma de spaties eruit gehaald, voor de rest was het gewoon een kwestie van
code:
1
2
    Memo1.Text := StringReplace(Memo1.Text, '<![if !supportFootnotes]>[' + IntToStr(x) +
 ']<![endif]>' ,  memo2.lines[x-1], [rfReplaceAll, rfIgnoreCase]);

En het werkt! Bedankt in iig!

[ Voor 0% gewijzigd door Verwijderd op 13-08-2002 12:58 . Reden: Layout verknalt, ff aangepast ]

Pagina: 1