2013-03-16 43 views
1

所以我有一個包含文本文件:從文件中讀取FreePascal的

Harry Potter and the Deathly Hallows###J. K. Rowling###2007 

而且我必須把它輸出到FreePascal的程序如下形式

J.K.Rowling "Harry Potter and the Deathly Hallows" 2007 year 

我知道如何從文件中讀取,但我不知道如何使它像以前的形式

有人可以幫助我嗎?我會非常感謝。

+1

你嘗試過這麼遠嗎?我想這是你的功課。將字符串拆分爲標記並將標記包含在###中。關於拆分字符串,請參閱http://www.lazarus.freepascal.org/index.php?topic=9789.0 – user1929959 2013-03-16 09:23:15

回答

1

如果TStringList在FreePascal的是相同德爾福,那麼這將這樣的伎倆:

function SortedString(const aString : String) : String; 
var 
    sList : TStringList; 
begin 
    Result := ''; 
    sList := TStringList.Create; 
    try 
    sList.LineBreak := '###'; 
    sList.Text := aString; 
    if (sList.Count = 3) then 
    begin 
     Result := sList[1] + ' "' + sList[0] + '" ' + sList[2] + ' year'; 
    end; 
    finally 
    sList.Free; 
    end; 
end; 

更新,如@TLama評論,FreePascal的TStringList沒有一個LineBreak財產。

試試這個(在StrUtils使用ReplaceStr):

function SortedString(const aString : String) : String; 
var 
    sList : TStringList; 
begin 
    Result := ''; 
    sList := TStringList.Create; 
    try 
    sList.Text := ReplaceStr(aString,'###',#13#10); 
    if (sList.Count = 3) then 
    begin 
     Result := sList[1] + ' "' + sList[0] + '" ' + sList[2] + ' year'; 
    end; 
    finally 
    sList.Free; 
    end; 
end; 
+0

恐怕不是;我已經在FPC 2.6.0(Lazarus 1.0 RC2)中檢查過了,['TStringList']沒有'LineBreak'屬性(http://www.freepascal.org/docs-html/rtl/classes/tstringlist-1 .html)可用。 – TLama 2013-03-16 12:08:37

+0

@TLama,的確如此。使用'ReplaceStr()'應該可以。 – 2013-03-16 12:29:44

+1

作爲FPC螳螂#24058提交 – 2013-03-16 14:14:26