Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String jeweils nach einem Punkt auslesen (https://www.delphipraxis.net/46189-string-jeweils-nach-einem-punkt-auslesen.html)

Grolle 20. Mai 2005 11:27


String jeweils nach einem Punkt auslesen
 
Hi!
ICh brauch mal wieder eure Hilfe! Ich möchte den String jeweils nach einem
Punkt auslesen. Die Zeile siht ungefähr so aus:
Zitat:

G1: 32948893948.1 G2: 4324324.0
Also müsste ich hier die 1 und die 0 erhalten.
Ich arbeite sonst (wegen D3) mit der jbstr.unit (String manipulation routines V 1.29)
Aber ich weiß nicht mit welcher Proc. ich das so filtern kann, wie ich es brauche.
Ich denke ich muss auch pos() irgendwie mit einbinden, aber wie?
Vielen Dank schonmal...

Wuaegner 20. Mai 2005 11:33

Re: String jeweils nach einem Punkt auslesen
 
Wenn hinter dem Punkt immer eine einstellige Ziffer kommt, dann holst du dir mit
Delphi-Quellcode:
pos('.',SubString)
die Stelle wo der Punkt erscheint und mit
Delphi-Quellcode:
copy()
kopierst du dann das Zeichen, das hinter dieser Punktposition kommt.

barf00s 20. Mai 2005 11:33

Re: String jeweils nach einem Punkt auslesen
 
Delphi-Quellcode:
sTextNachPunkt := Copy(sOriginal, Pos('.', sOriginal) + 1, Length(sOriginal));

Matze 20. Mai 2005 11:34

Re: String jeweils nach einem Punkt auslesen
 
Such mal nach Delphi-Referenz durchsuchenPos (erstes Vorkommen des Punktes), Delphi-Referenz durchsuchenPosEx (weitere Vorkommen) oder evtl. auch nach Delphi-Referenz durchsuchenexplode.

Grolle 20. Mai 2005 11:37

Re: String jeweils nach einem Punkt auslesen
 
Danke für eure schnellen Antworten werd ich mal durchprobieren :mrgreen:

@Matze
Hat Delphi 3 PosEX? :gruebel:

Matze 20. Mai 2005 11:51

Re: String jeweils nach einem Punkt auslesen
 
Zitat:

Zitat von Grolle
@Matze
Hat Delphi 3 PosEX? :gruebel:

Delphi 3, achso, darauf habe ich nicht geachtet, soviel ich weiß, gibt es das dort noch nicht. Wenn es nicht zu viele Stringssind, kannst du es auch recht einfach mit Schleifen lösen, nur ist dies vergleichsweise langsam.

Grolle 20. Mai 2005 12:49

Re: String jeweils nach einem Punkt auslesen
 
Irgendwie haut das nicht hin. Ich bekomme nicht einmal
den ersten Wert. Was mache ich falsch?

Delphi-Quellcode:
da := StrToInt(copy(List.Strings[2],pos('.',s)));

Ultimator 20. Mai 2005 12:52

Re: String jeweils nach einem Punkt auslesen
 
Dein copy-Befehl ist falsch, das dürfte sich so gar nicht kompilieren lassen.
Er erwartet als Parameter
  • Den String, von dem ein Teil kopiet werden soll
  • die Position in diesem String, von dem ab kopiert werden soll
  • die Anzahl der Zeichen, die kopiert werden soll

Und dir fehlt da der 3. Parameter

arbu man 20. Mai 2005 12:58

Re: String jeweils nach einem Punkt auslesen
 
Sonst such mal in der DP nach 'expolde' oder 'splitstring' damit sollte es auch gehen

Grolle 20. Mai 2005 13:14

Re: String jeweils nach einem Punkt auslesen
 
@ Ultimator

Und wie kann ich ihm da die Anzahl der Zeichen übergeben?

Matze 20. Mai 2005 13:27

Re: String jeweils nach einem Punkt auslesen
 
Delphi-Quellcode:
Copy('Haus', 2, 1);
Das ist ein Beispiel, genaueres dazu findest du in der OH.
Sobald du die erste Klammer eingibst, solltest du sehen, welche Parameter erwartet werden.

barf00s 20. Mai 2005 13:32

Re: String jeweils nach einem Punkt auslesen
 
Zitat:

Delphi-Quellcode:
sTextNachPunkt := Copy(sOriginal, Pos('.', sOriginal) + 1, Length(sOriginal));

und

Delphi-Quellcode:
sTextVorDemPunkt := Copy(sOriginal, 1, Pos('.', sOriginal) - 1);
SubString := Copy(QuellString, StartIndex, Längedeszukopierendenstrings);

marabu 20. Mai 2005 14:41

Re: String jeweils nach einem Punkt auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ein quick & dirty PosEx() auch für D3:

Delphi-Quellcode:
function PosEx(const SubStr, S: string; Offset: integer): integer;
begin
  Result := Pos(SubStr, Copy(S, OffSet, Succ(Length(S) - OffSet)));
  if Result > 0 then Result := Result + Pred(Offset);
end;
TStringList gab es doch schon unter D3 - oder?

Delphi-Quellcode:
var
  sl: TStringList;
  s: string;
  i: integer;
begin
  s := 'G1: 32948893948.1 G2: 4324324.0';
  sl := TStringList.Create;
  i := ExtractBetween(s, '.', ' ', sl);
  ShowMessage(IntToStr(i) + #13#10 + sl.CommaText);
  sl.Free;
end;
Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 Uhr.

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 by Thomas Breitkreuz