![]() |
Wert mit Hilfe einer Formatierungsmaske aus String auslesen
Hallo zusammen!
Ich möchte aus einem String mit Hilfe einer Maske einen Substring ermitteln - Ungefähr so:
Jetzt durchwühle schon seit ner geschlagenen Stunde vergeblich die Delphi-Hilfe und das Forum. :( Hatte eigentlich vermutet, dass Delphi irgendwo eine entsprechende Funktion mitliefert. Vielleicht bin ich aber auch einfach zu blöd, sie zu finden...:wink: Erwarte nicht, dass das jemand für mich schreibt, aber wollte nur nochmal nachgefragt haben ob's schon was gibt, bevor ich die Funktion selber schreibe. Danke im Voraus für Eure Hilfe. |
AW: Wert mit Hilfe einer Formatierungsmaske aus String auslesen
Hallo,
also zum durchsuchen von Strings, wird dir POS weiterhelfen. Darüber gibt es hier auch einige Beiträge. Allerdings musst Du Dir die Maske selberschreiben. Die sollte ja nach deinen Vorstellungen sein. Schreib Dir einen Parser, der die Daten wie Du Sie haben willst zurück gibt. Am besten das ganze in eine Klasse packen, dann kannst Du verschieden Sachen später davon ableiten. Gruß Jens |
AW: Wert mit Hilfe einer Formatierungsmaske aus String auslesen
Das Problem an der Geschichte ist, daß die "Zahl" nicht immer aus der gleichen Anzahl Zeichen besteht. Sonst wäre das mit Copy schnell erledigt.
Da würde mir folgendes einfallen: Zitat:
Beispiel: Format: 'Die Simpsons Folge #.avi' - die Position des # und das Zeichen danach (.) bestimmen - ab der Position jedes Zeichen einem String hinzufügen bis . erreicht - dann sollte im String z.B. "114" stehen. - ggf. bei Bedarf in z.B. Integer wandeln. ...so als Idee. |
AW: Wert mit Hilfe einer Formatierungsmaske aus String auslesen
Danke für die Antworten.
Schade, also keine Delphi-Interne Function... :cry: Zitat:
Damit wäre die Position ja schon mal bestimmt, ab der ich den Substring kopieren muss. Jetzt gehts an die Länge des Substrings: Zitat:
(z.B. bei 'Die Simpsons Folge 19.06.avi'), aber wenn ich den Rest der Maske nehme ('.avi') und mit PosEx dessen Position bestimme, müsste es doch gehen. |
AW: Wert mit Hilfe einer Formatierungsmaske aus String auslesen
na gut, ich wußte nicht, daß auch 19.06.avi dabei sein kann. :zwinker:
wie du schon sagtest, mit PosEx die Position von .avi bestimmen und dann mit copy zwischen "Beginn" und "Ende" rauskopieren. |
AW: Wert mit Hilfe einer Formatierungsmaske aus String auslesen
Ja, hätte ich etwas konkretisieren können. Die Funktion sollte möglichst universell sein.
Lass dann gleich mal was von mir Hören, wenn ich fertig bin... |
AW: Wert mit Hilfe einer Formatierungsmaske aus String auslesen
Da isses :) Danke für die Mithilfe.
Entschuldigt mein "Denglisch" :-D
Code:
function GetFormatValue(SourceString, Formatierung, Platzhalter: string): string;
//Wert mit Maske aus String auslesen //z.B. ermitteln der Simpsons-Folge: //Eingabe: // SourceString: 'Simpsons Folge 114.avi' // Formatierung: 'Simpsons Folge ?.avi' // Platzhalter: '?' // --> Ergebnis: '114' var CutStart, CutEnd: integer; Endung, Teilstring: string; begin //vordere Schneideposition bestimmen CutStart:= Pos(Platzhalter,Formatierung); //Endung (= alle Zeichen hinter dem Platzhalter) bestimmen Endung:= RightStr(Formatierung,length(Formatierung)-CutStart-length(Platzhalter)+1); //hintere Schneideposition bestimmen CutEnd:= posEx(Endung,SourceString,CutStart); //Teilstring kopieren und zurückgeben TeilString:= copy(SourceString,CutStart,CutEnd-CutStart); Result:= Teilstring; end; |
AW: Wert mit Hilfe einer Formatierungsmaske aus String auslesen
na siehste, geht doch. :thumb:
PS: manchmal ist Denglisch nicht verkehrt. Da kommt man nicht mit reservierten Wörtern in Konflikt. Nur wenn mehrere Personen den Quelltext pflegen ist es nicht angebracht :zwinker: |
AW: Wert mit Hilfe einer Formatierungsmaske aus String auslesen
Du hast das Problem jetzt zwar schon selbst gelöst, aber dennoch ein guter Tipp für die Zukunft, gerade, wenn's mal komplizierter wird, sind [dp]Reguläre Ausdrücke[/dp] (auch bekannt als RegEx(p)).
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:08 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-2025 by Thomas Breitkreuz