Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zeichenkette gezeilt absuchen und gefundene Zeichenausschnei (https://www.delphipraxis.net/32554-zeichenkette-gezeilt-absuchen-und-gefundene-zeichenausschnei.html)

skaven 25. Okt 2004 09:47


Zeichenkette gezeilt absuchen und gefundene Zeichenausschnei
 
Hallo zusammen,

ich würde gernen eine Zeichenkette die so aussieht
PRD'#*D#+'54123'#++'-->'

nach den Zahlen durchsuchen und diese dann ausschneiden und in einer variablen speichern.

Hab leider keine Idee wie :-(

Ist ja auch Montag.

Hat jemand ne Idee?

LoL 25. Okt 2004 09:49

Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
 
Delphi-Quellcode:
for i := 1 to length(str)
  if str[i] = gesuchtes_zeichen then machwas

skaven 25. Okt 2004 09:55

Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
 
Das ist glaube ich nicht genau das was ich suche.

Leider weiß ich nicht genau die Zahlen.

Ich würde gerne sagen.

Lese den String von PRD bis > aus und speicher die darin enthalten Zahlen unter value ab.

ste_ett 25. Okt 2004 09:56

Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
 
Wenn der String vom Aufbau her immer gleich ist, kannst du mit Copy einfach kopieren.

Ändert sich der Aufbau und es gibt noch bestimmte Kriterien, die immer passen (z.B. immer 'zahl'), kannst du mit Pos arbeiten.

Wenn es keine Kriterien gibt, kannst du den String Zeichen für Zeichen durchgehen bis zu der Stelle, wo du zum ersten Mal eine Zahl findest. Von da aus dann weiter bis du ein Zeichen findest, was keine Zahl ist.

:)

LoL 25. Okt 2004 10:00

Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
 
du willst also alle zahlen die da drin sind speichern?
Delphi-Quellcode:
for i := 1 to length(str)
  if str[i] in ['0'..'9'] then speicher_key[i]

skaven 25. Okt 2004 10:01

Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
 
Das Problem ist das ich eine sehr lange zeichenkette bekomme.

Das heißt in der variablen die ich abfragen möchte sind auch zahlen gespeichert die nicht zwischen PRD und > stehen, ich möchte aber die zeichenkette durchfosrten und nur die zahlen "filtern" die zwischen prd und > stehen.

Gibt es keine anweisung die sagt, schau in die zeichenkette, wenn du prd findest dann suche nach zahlen, speicher diese in value ab, schau aber nur solange bis du > siehst. gehe dann weiter und durchforste den nächsten ablauf, wenn du wieder prd findest, bsi > speicher dies in einer anderen variablen ab, etc.

LoL 25. Okt 2004 10:04

Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
 
schneide doch einfach von dem einem bis zu anderen zeichern herraus und durchsuche sie dann mit der suchroutine

Pos, Copy

skaven 25. Okt 2004 10:07

Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
 
der strang siehst z.b. so aus:

'j 1000 4000' pof#*'-->PRD'%&/'45465'##*'-->PRD'hgdas()'45811'#+*'-->' usw.

Ich würde also gerne die zahlen zwischen prd und --> herausfinden udn jeweils in einer fortlaufendne variablen abspeichern

LoL 25. Okt 2004 10:09

Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
 
ich hab dir doch geschrieben wie man es machen könnte oder willst du den quelltext von mir?

skaven 25. Okt 2004 10:12

Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
 
verstehe nicht wie ich von einem zum anderen zeichen heraus schneiden kann wenn die wörter doppelt sind, also wenn zweimal prd vorkommt

skaven 25. Okt 2004 10:27

Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
 
Keiner mehr eine Idee?

choose 25. Okt 2004 10:38

Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
 
Hallo skaven,

für Probleme dieser Art eignen sich [dp]reguläre Ausdrücke[/dp], mit deren Hilfe Du Dein Problem vielleicht in der Art
Delphi-Quellcode:
with RegExp('PRD[^>]*?(\d+)[^>]*>') do
  if Execute(AString) then
  repeat
    myResult.Add(Match[1]);
  until not ExecuteNext;
lösen könntest.

Sharky 25. Okt 2004 10:52

Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
 
Zitat:

Zitat von skaven
Keiner mehr eine Idee?

Du wirst verzeihen müssen wenn nicht jeder sofort alles liegen lässt um sich mit deiner Frage zu beschäftigen!
Zumal doch genügend Lösungswege genannt wurden.

Ausserdem...... Du weisst das in der Delphi-PRAXIS das "pushen" erst nach mindestens 24 Stunden erwünscht ist. :warn:

skaven 25. Okt 2004 10:54

Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
 
Tut mir Leid, aber bin sehr ungeduldig wenn ich nicht weiter komme.

SORRY nochmal

jim_raynor 25. Okt 2004 11:13

Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
 
@Skaven: Sorry, das Forum ist dazu da dir Denkansätze zu geben. Nicht fertige Quellcodes zu präsentieren.
Und von den Denkansätzen solltest du hier mehr als genug bekommen haben.

Zitat:

Zitat von Sharky
Du weisst das in der Delphi-PRAXIS das "pushen" erst nach mindestens 24 Stunden erwünscht ist. :warn:

Achtung OffTopic: Ist erwünscht überhaupt das richtige Wort oder sollte es besser heißen erlaubt?

glkgereon 28. Okt 2004 13:08

Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
 
auf die gefahr hin das ich aussagen meiner vorredner wiederhole:

Delphi-Quellcode:
for i:=1 to length(ausdruck) do
  if ausdruck[i] in ['1'..'9'] then zahlen.Add(ausdruck[i]);
so, wenn du nun mehrere "'prd'-'>'-konstruktionen" hast, könntest du sowas in die schleife machen machen:

wenn aktuelles zeichen gleich dem endzeichen ist, dan lösche alle zeichen bis zum endzeichen inclusive des endzeichens

was dabei noch an "haken" bzw notwändigen änderungen im aufbau auftreten wirst du dann noch merken

skaven 29. Okt 2004 09:36

Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
 
Dabke allen, die mir geholfen haben.

Das Programm ist fertig, smile


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