मैं एक सरल पार्सर का उपयोग कर इस की देखभाल करते हैं। मेरे पास दो कार्य हैं, जिन्हें नोमस्ट्रिंगपार्ट कहा जाता है जो एक विशिष्ट डिलीमीटर (अंतरिक्ष के ऊपर आपके मामले में) के साथ एक स्ट्रिंग में "भागों" की संख्या देता है और GetStrPart एक विशिष्ट डिलीमीटर के साथ स्ट्रिंग से विशिष्ट भाग देता है। इन दोनों रूटीन का इस्तेमाल कई परियोजनाओं में मेरे टर्बो पास्कल दिनों से किया गया है। उपयोग के
function NumStringParts(SourceStr,Delimiter:String):Integer;
var
offset : integer;
curnum : integer;
begin
curnum := 1;
offset := 1;
while (offset <> 0) do
begin
Offset := Pos(Delimiter,SourceStr);
if Offset <> 0 then
begin
Inc(CurNum);
Delete(SourceStr,1,(Offset-1)+Length(Delimiter));
end;
end;
result := CurNum;
end;
function GetStringPart(SourceStr,Delimiter:String;Num:Integer):string;
var
offset : integer;
CurNum : integer;
CurPart : String;
begin
CurNum := 1;
Offset := 1;
While (CurNum <= Num) and (Offset <> 0) do
begin
Offset := Pos(Delimiter,SourceStr);
if Offset <> 0 then
begin
CurPart := Copy(SourceStr,1,Offset-1);
Delete(SourceStr,1,(Offset-1)+Length(Delimiter));
Inc(CurNum)
end
else
CurPart := SourceStr;
end;
if CurNum >= Num then
Result := CurPart
else
Result := '';
end;
उदाहरण:
var
st : string;
f1,f2 : double;
begin
st := 'a number 12.35 and another 13.415';
ShowMessage('Total String parts = '+IntToStr(NumStringParts(st,#32)));
f1 := StrToFloatDef(GetStringPart(st,#32,3),0.0);
f2 := StrToFloatDef(GetStringPart(st,#32,6),0.0);
ShowMessage('Float 1 = '+FloatToStr(F1)+' and Float 2 = '+FloatToStr(F2));
end;
इन दिनचर्या साधारण या सख्त अल्पविराम से परे भी तार के लिए चमत्कार काम करते हैं। ये दिनचर्या डेल्फी 200 9/2010 में अद्भुत काम करते हैं।
इसके लिए धन्यवाद। बस मैं यह चाहता हूं। उदाहरण उपयोग: स्कैनफॉर्मैट ('संख्या 27 स्ट्रिंग हैलो', 'संख्या% डी स्ट्रिंग% s', [@ anInt, @ aString]); नोट: एक स्ट्रिंग निकालने से स्ट्रिंग के बाद पहला अक्षर स्ट्रिंग में भी निहित होता है। –