AGB  ·  Datenschutz  ·  Impressum  







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

String parsen

Ein Thema von danieleh · begonnen am 12. Mai 2009 · letzter Beitrag vom 15. Mai 2009
 
fui-tak

Registriert seit: 24. Okt 2008
117 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: String parsen

  Alt 15. Mai 2009, 13:01
Für sowas hab ich mir mal selbst zwei Funktionen geschrieben:

Delphi-Quellcode:
function positionSuchen(hauptstring, suchstring:string; nummerSuchstring:integer):integer;
  var
    i,laenge,pos1,poszaehler: integer;
begin
  poszaehler := 0;
  for i := 0 to nummerSuchstring-2 do
  begin
     pos1 := Pos(suchstring,hauptstring);
     laenge := Length(suchstring);
     poszaehler := poszaehler+laenge;
     Delete(hauptstring,pos1,laenge);
  end;
  if Pos(suchstring,hauptstring) > 0 then
     Result := Pos(suchstring,hauptstring)+poszaehler
  else Result := 0;
end;

function wertZwischenErweitert(inString, zeichen1:string; zeichen1nummer:integer; zeichen2:string; zeichen2nummer:integer; abErstesZeichen, bisLetztesZeichen: boolean):string;
var pos1,pos2:integer;
begin
    if abErstesZeichen = false then
       pos1 := positionSuchen(inString,zeichen1,zeichen1nummer) + Length(zeichen1)
    else pos1 := 1;

    if bisletztesZeichen = false then
       pos2 := positionSuchen(inString,zeichen2,zeichen2nummer)
    else pos2 := Length(inString)+1;

    Result := Copy(inString,pos1,pos2-pos1);
end;





//Aufruf:
var s: string
...

s := '"TESTNAME";"C:\Eigene Dateien\TESTPFAD\DATEI.XXX";Param1;Param2;Param3'


var1 := wertZwischenErweitert(s, '',0, ';', 1, true,false); // "TESTNAME"
var1 := wertZwischenErweitert(var1, '"', 1, '"' ,2 ,false,false); // TESTNAME

var2 := wertZwischenErweitert(s,';',1,';',2,false,false); // "D:\Eigene Dateien\TESTPFAD\DATEI.XXX"
var2 := wertZwischenErweitert(var2,'"',1,'"',2,false,false); // D:\Eigene Dateien\TESTPFAD\DATEI.XXX

var3 := wertZwischenErweitert(s, ';',2, ';', 3, false,false); // Param1
var4 := wertZwischenErweitert(s, ';',3, ';', 4, false,false); // Param2
var5 := wertZwischenErweitert(s, ';',4, '', 0, false,true); // Param3
Die Funktionen an sich funktionieren sicher, das konkrete lösen des Problems ist ungetestet.

Zum benutzen:
-der erste Parameter "inString" erhält den String, in dem gesucht werden soll
-der zweite Parameter "zeichen1" erhält das Zeichen oder den String, der vor dem gesuchten String steht
-der dritte Parameter "zeichen1nummer" erhält die Nummer von "zeichen1" (er könnte ja mehrmals auftauchen, wie hier das ";")
-"zeichen2" ist entsprechend "zeichen1"
-"zeichen2nummer" ist entsprechend "zeichen1nummer"
-"abErstesZeichen" ist true, wenn es kein erstes Zeichen gibt, weil das Gesuchte beim ersten Zeichen anfängt
-"bisLetztesZeichen" ist true, wenn es kein letztes Zeichen gibt, weil das Gesuchte beim letzten Zeichen aufhört
  Mit Zitat antworten Zitat
 


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