Od kada je Delphi uveo gomilu "nepotrebnih" funkcija za rad sa stringovima izgleda da su ljudi zaboravili sa rade sa Pos, Copy i Delete funkcijama
Ok, evo ga primer koji radi otprilike ovno sto tebi treba. Radio sam ga u TurboPascal-u posto mi delphi nije bio pri ruci, ali snacices se,... funkcije neces morati da menjas, a glavni kod prepravi kako ti odgovara.
Code:
Program ParseStr;
Function GetStrValue (Name, S : String) : String;
Begin
If Pos (Name + '=', S)= 0 Then
Begin
Exit;
GetStrValue := '';
End;
Delete (S, 1, Pos (Name + '=', S) + Length (Name));
If S [1] = '"' Then
Begin
Delete (S, 1, 1);
GetStrValue := Copy (S, 1, Pos ('"', S) - 1);
End
Else
Begin
While S [1] = #32 Do
Delete (S, 1, 1);
GetStrValue := Copy (S, 1, Pos (' ', S) - 1);
End;
End { GetStrValue };
Function GetStrSubValue (Name, SubName, S : String) : String;
Begin
S := GetStrValue (Name, S);
If (S = '') Or (Pos (SubName + ':' , S) = 0) Then
Begin
GetStrSubValue := '';
Exit;
End;
Delete (S, 1, Pos (SubName + ':', S) + Length (SubName));
While S [1] = #32 Do
Delete (S, 1, 1);
If Pos (';', S) > 0 Then
GetStrSubValue := Copy (S, 1, Pos (';', S) - 1)
Else
GetStrSubValue := S;
End { GetStrSubValue };
Var
X : String;
Begin
X := '<tagname attribute1=value1 attribute2="value2" attribute3="subatt1: subval1; subatt2: subval2">';
WriteLn (GetStrValue ('attribute3', X));
WriteLn (GetStrSubValue ('attribute3', 'subatt2', X));
End.
Nadam se da sam pomogao.