2012-11-25 78 views
0

我有一個喜歡看這兩個值(從控制檯輸入)的行字符串:閱讀()可變長度

David 89000 
Peter 99500 
Jim 23999 
END 1 

有沒有辦法救字符串和數字到變量以外當你不知道字符串長度時循環讀取一個字符?

str:=''; salary:=0; i:=1; 
    while str<> 'END' do 
    begin 
    str:=''; salary:=0; 
    read(ch); 
    while ch <> ' ' do 
     begin 
     str:=str+ch; 
     read(ch); 
     end; 
    read(salary); 

    array[i].name:=str; 
    array[i].salary:=salary; 
    i:=i+1; 
    readln; 
    end; 

回答

2

您可以到ReadLn單個呼叫做出來,然後解析輸入自己:

var 
    TextIn: string; 
    Person: string; 
    Salary: Integer; 
begin 
    while true do 
    begin 
    ReadLn(TextIn); // Requires user to hit Enter 
    if Copy(TextIn, 1, 3) <> 'END' then 
    begin 
     Person := Copy(TextIn, 1, Pos(' ', TextIn) - 1); 
     Salary := StrToInt(Copy(TextIn, Pos(' ', TextIn) + 1, 255); 
    end 
    else 
     Exit; 
    end; 
end; 

我沒有包含任何錯誤檢查(這應該有),因爲你原來的代碼不有任何一個。

+0

很好,謝謝! – Dwelle

0

不符合標準I/O功能。當然,您可以將該代碼放入單獨的過程中,或者使用tstringlist進行分割。