Thema: Delphi String richtig zerlegen

Einzelnen Beitrag anzeigen

omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: String richtig zerlegen

  Alt 5. Sep 2008, 03:47
Delphi-Quellcode:
function MakeClasses(Input:string):string;
var RegExpr, RegExprAtt, RegExprWert:TRegExpr;
    header, strings, zahlen:string;
begin
  Result:='';
  RegExpr:=TRegExpr.Create;
  RegExprAtt:=TRegExpr.Create;
  RegExprWert:=TRegExpr.Create;
  try
    RegExpr.ModifierG:=false;
    RegExpr.Expression:='{(.*)}';
    RegExprAtt.ModifierG:=false;
    RegExprAtt.Expression:='"(.*)":(.*)(,|})';
    if RegExpr.Exec(Input) then begin
      repeat
        if RegExprAtt.Exec(RegExpr.Match[0]) then begin
          header:='';
          strings:='';
          zahlen:='';
          repeat
            if lowercase(RegExprAtt.Match[1]) = 'classthen begin
              if header = 'then
                header:=StringReplace(RegExprAtt.Match[2], '"', '', [rfReplaceAll])
              else
                raise Exception.Create('Fehler, Class-Eintrag zweimal vorhanden.');
            end
            else begin
              RegExprWert.Expression:='(["0-9.]*)';
              if RegExprWert.Exec(RegExprAtt.Match[2])
                 and (RegExprWert.Match[1] = RegExprAtt.Match[2]) then
              begin
                zahlen:=zahlen + ',' + RegExprAtt.Match[1];
              end
              else strings:=strings + ',' + RegExprAtt.Match[1];
            end;
          until not RegExprAtt.ExecNext;
        end;
        Result:=Result +
          'var'#13 +
          'class' + strings + ' :string;'#13 +
          'begin'#13 +
          'class:=''' + header + ''';'#13 +
          'end;'#13;
      until not RegExpr.ExecNext;
    end;
  finally
    RegExpr.free;
    RegExprAtt.free;
    RegExprWert.free;
  end;
end;
RegExpr
  Mit Zitat antworten Zitat