AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Pos()

Ein Thema von sharkx · begonnen am 16. Nov 2003 · letzter Beitrag vom 16. Nov 2003
Antwort Antwort
Seite 1 von 2  1 2      
sharkx

Registriert seit: 24. Feb 2003
Ort: St. Ingbert
211 Beiträge
 
Delphi 7 Enterprise
 
#1

Problem mit Pos()

  Alt 16. Nov 2003, 21:59
Hallo,

Folgender String möchte ich in 2 einzelteile zerlegen. Einmal den Command und einmal (ich nenns mal) Ausführung.

Der String sieht wie folgt aus:
Zitat:
.add sharkx
Lösen tu ich es mit folgendem Code
Delphi-Quellcode:
  { Content auf Command Parsen }
  CommandPos := Pos(Content, ' ');
  Commands := Copy(Content, 0, CommandPos +4);
  Memo1.Lines.Add('Parse Commands: ' + Commands);

  { Content auf Ausführung Parsen }
  TextPos := Pos(Content, ' ');
  Text := Copy(Content, 6, TextPos +Length(content));
  Memo1.Lines.Add('Parse Text: ' + Text);
Nun .. jetzt ist es aber nunmal so, das ich nicht weiß wielange der Command ist. ( .add 4, .stats 6 und so weiter )
Und was ist wenn der String am Anfang nen leerzeichen hat? Wie sollte ich dies am besten bewältigen?

Ich hoffe ich hab mich verständlich ausgedrückt :-)
Programming today is a race between Software Engineers striving to build bigger and better idiot-proof Programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning!
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem mit Pos()

  Alt 16. Nov 2003, 22:07
Dann füge doch mal folgende Zeile als erste ein:
Content := Trim(Content); Das entfernt alle führenden und abschließenden Zeichen aus dem Bereich <= #32 (also auch Leerzeichen).

.....
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
sharkx

Registriert seit: 24. Feb 2003
Ort: St. Ingbert
211 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Problem mit Pos()

  Alt 16. Nov 2003, 22:11
gut ok .. dann hab ich einen anfang, aber wie bekomm ich das erste wort raus, wenn ich nicht weiß wie lang es ist?
Programming today is a race between Software Engineers striving to build bigger and better idiot-proof Programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning!
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#4

Re: Problem mit Pos()

  Alt 16. Nov 2003, 22:27
Zitat:
{ Content auf Command Parsen }
CommandPos := Pos(Content, ' ');
Commands := Copy(Content, 0, CommandPos +4);
Memo1.Lines.Add('Parse Commands: ' + Commands);

{ Content auf Ausführung Parsen }
TextPos := Pos(Content, ' ');
Text := Copy(Content, 6, TextPos +Length(content));
Memo1.Lines.Add('Parse Text: ' + Text);
Wenn ich mich richtig entsinne ist Pos so aufgebaut:

Pos(Substring, String), du hast glaube ich (String, Substring) benutzt.

So suchst du dann nach Content in ' '
Weiterhin ermittelst du das Leerzeichen im String Content, das an Position 5 ist.
Es reicht also zu sagen:

Delphi-Quellcode:
Commands := Copy(Content, 0, CommandPos-1)
Text := Copy(Content, CommandPos+1, length(Content)-CommandPos)
Wobei du das CommandPos vielleicht in Trennzeichen oder so umtaufen solltest, weil
es nichts mehr mit dem Command zu tun hat, sonder als Trennung von Command und Text
dient.

Gruß Minz
  Mit Zitat antworten Zitat
sharkx

Registriert seit: 24. Feb 2003
Ort: St. Ingbert
211 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Problem mit Pos()

  Alt 16. Nov 2003, 22:36
hmm .. hab ich nun verstanden, Aber Minz, wieso bekomm ich dann als Command nichts und als Text die ganze Line? Wenn ich das richtig verstehe, müsste vor dem eigentlichen Conten ein leerzeichen stehen was er als suchposition nimmt. Ist es aber im originalen nicht, zudem habe ich es auch mit Trim weggeschnitten.



Edit: Habs danke :)))
Programming today is a race between Software Engineers striving to build bigger and better idiot-proof Programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning!
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#6

Re: Problem mit Pos()

  Alt 16. Nov 2003, 22:40
trim solltest du auch verwenden.

Du willst doch eine Zeile nach dem Aufbau haben:

'Befehl Wert'

das heißt du suchst zuerst das Leerzeichen (Trennzeichen von Befehl und Wert hier: 7) das kriegst du mit Pos raus

und dann kopierst du von 1 (nicht 0 war vorher falsch) bis zum Leerzeichen, um den Befehl zu kriegen.
Dann kopierst du von Leerzeichen bis Ende des strings (Länge des Strings minus Position vom Trennzeichen)

Sollte schon dann funzen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#7

Re: Problem mit Pos()

  Alt 16. Nov 2003, 22:40
So müsste es geh'n.
Delphi-Quellcode:
Content := Trim(Content);
T := Pos(' ', Content);
Commands := Trim(Copy(Content, 1, T - 1));
Text := Trim(Copy(Content, T + 1, Length(Content)));
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#8

Re: Problem mit Pos()

  Alt 16. Nov 2003, 22:43
Zitat:
Content := Trim(Content);
T := Pos(' ', Content);
Commands := Trim(Copy(Content, 1, T - 1));
Text := Trim(Copy(Content, T + 1, Length(Content)));
himitsu fast

weil du gibst ja die Länge an, die gelesen werden soll
daher darfs nicht length(content) sein! sonst versuchst du
ab dem Trennzeichen die ganze Länge von Content zu kopieren.

Meine Zeilen oben sollten so funzen, statt der 0 eine 1.

Wenn nicht, zeig code, da ist was anderes im argen.
  Mit Zitat antworten Zitat
sharkx

Registriert seit: 24. Feb 2003
Ort: St. Ingbert
211 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Problem mit Pos()

  Alt 16. Nov 2003, 22:44
himitsu .. jap, hatte es aber etwa zeitgleich mit deinem post geschafft :)
Programming today is a race between Software Engineers striving to build bigger and better idiot-proof Programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning!
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#10

Re: Problem mit Pos()

  Alt 16. Nov 2003, 22:46
Ich fasse mal zusammen:

Delphi-Quellcode:
  Content := Trim(Content);

  { Content auf Command Parsen } 
  CommandPos := Pos(' ', Content);
  Commands := Copy(Content, 1, CommandPos-1);
  Memo1.Lines.Add('Parse Commands: ' + Commands);

  { Content auf Ausführung Parsen } 
  TextPos := Pos(' ', Content);
  Text := Copy(Content, TextPos+1, Length(content));
  Memo1.Lines.Add('Parse Text: ' + Text);
Hast du es so gemacht?

[EDIT]
Ups.. Zu langsaaaam
[/EDIT]
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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