AGB  ·  Datenschutz  ·  Impressum  







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

Pos und Delete

Ein Thema von youuu · begonnen am 14. Jul 2009 · letzter Beitrag vom 14. Jul 2009
Antwort Antwort
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#1

Pos und Delete

  Alt 14. Jul 2009, 19:50
Hi,

Ich habe einen String z.B.:

S:= 'Umsatz: 88€'

und ich möchte nun nur den Betrag filtern.

S2:= '88';

Wie kann ich das am besten realisieren.

Ich hab an Pos und delete gedacht, allerdings hab ich damit noch nicht wirklich gearbeitet.
Steven
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Pos und Delete

  Alt 14. Jul 2009, 20:03
Guten Abend,

ist der String immer so aufgebaut?
Also vor dem Betrag ein Leerzeichen und nach dem Betrag
ein € Zeichen?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Pos und Delete

  Alt 14. Jul 2009, 20:04
Als erstes prüfen, ob der Such-String identifiziert werden kann (in deinem Fall nicht, Beträge sind immer anders), dann also immer gültige Begrenzung ermitteln:

Betrag folgt (hoffentlich) immer nach einem Doppelpunkt. Also alles bis zum Doppelpunkt löschen:
Delphi-Quellcode:
S := 'Umsatz: 88€
Delete(S, 1, Pos(':', S));
Jetzt hast Du " 88€" als Rest-String. Sofern es immer €-Beträge sind:
Delete(S, Pos('', S), 1024); Die 1024 ist hier nur, um nicht die Länge des String ermitteln zu müssen.

Rest-String ist jetzt " 88", also noch Leerzeichen weg:
S := Trim(S); Die vorgehensweise hat einen Haken... Abweichungen beim Ausgangsstring werden nicht so leicht weggesteckt. Also sicherstellen, dass : und € vorhanden sind, ist schonmal Pflicht.
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#4

Re: Pos und Delete

  Alt 14. Jul 2009, 20:25
Zitat von Satty67:
Die 1024 ist hier nur, um nicht die Länge des String ermitteln zu müssen.
Was bedeutet, das Beträge mit mehr als 1023 Stellen falsch wiedergegeben werden.

Ganz ehrlich: Was spricht hier gegen eine Verwendung von Length? Die zusätzliche CPU-Zeit dürfte kaum der Grund sein.

//Nachtrag: Eine Alternative wäre die Verwendung von TPerlRegEx mit einer Regex, die nur auf numerische Zeichen anspringt, evtl. noch auf ".,-"...
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#5

Re: Pos und Delete

  Alt 14. Jul 2009, 20:36
Zitat von Daniel G:
Zitat von Satty67:
Die 1024 ist hier nur, um nicht die Länge des String ermitteln zu müssen.
Was bedeutet, das Beträge mit mehr als 1023 Stellen falsch wiedergegeben werden.
MaxInt verwenden Ist bestimmt auch schneller als Length, oder?
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Pos und Delete

  Alt 14. Jul 2009, 20:40
Ja String ist definitive immer gleich.

Danke euch
Steven
  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 02:23 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