2014-06-05 57 views
0

我一直在做任務,我必須模擬一個實際的預約系統。寫入文件有記錄

用戶可以創建一個事件,它實際上只是命名他們可以寫入的文本文件。

procedure TForm4.Button1Click(Sender: TObject); 
var 
    f: textfile; 
    usersFilename: string; 
begin 
    usersFilename := Inputbox('Enter the name of the Event', '', ''); 
    AssignFile(f, usersFilename); 
    ReWrite(f, usersFilename); 
    WriteLn(f, usersFilename); 
    CloseFile(f); 
    Reset(f); 
end; 

所以,現在我已經創建了他們應該能夠編寫與此

procedure TForm4.Button2Click(Sender: TObject); 
var 
    Customer: TCustomer; 
    f: textfile; 
    usersFilename: string; 
begin 
    usersFilename := Inputbox('Event Name', '', ''); 
    AssignFile(f, usersFilename); 

    with Customer do 
    begin 
     FirstName := 'John'; 
     LastName := 'Smith'; 
     EventDate := 'Grimworth'; 
     SeatNumber := '1'; 
     PhoneNumber := '1'; 
     Adress := '7 Park Drive'; 
    end; 
end; 

本來我只是將後寫入文件inputboxes事件的名稱的文件用戶編寫了事件的名稱,但是在重新閱讀作業大綱後,我意識到我必須使用記錄,所以現在我試圖使用它們,但是我不確定哪裏出錯了。沒有錯誤實際上彈出其只是,如果你打開文本文件沒有什麼,它是空的。

+2

Buttone2Click不寫入文件。您還需要打開文件並使用該方法寫入文件。 –

回答

5

如果我們看看你的第二塊。有幾個問題:

  1. 你的文件是錯誤的類型。它應該是File of TCustomer而不是TextFile。記錄文件是特定類型的文件。
  2. 你永遠不會寫任何東西到文件中。要將文件寫入文件,您需要使用類似Write(f, ....)
  3. 您實際上並未打開該文件。您需要使用Reset(f)打開文件進行讀寫,或者使用ReWrite(f)來創建文件(如果文件已存在,也會將其保留爲空)。
  4. 完成後應該關閉文件。

爲了把它放在一起,你的代碼塊應該是這個樣子:

這是沒有考慮到
procedure TForm4.Button2Click(Sender: TObject); 
var 
    Customer: TCustomer; 
    f: File of TCustomer; 
    usersFilename: string; 
begin 
    usersFilename := Inputbox('Event Name', '', ''); 
    AssignFile(f, usersFilename); 
    // Open if it exists or create the file 
    if FileExists(usersFilename) then 
    Reset(f) 
    else 
    ReWrite(f); 

    // Set up our data for writing. This information could 
    // be retrieved from text boxes, etc. 
    with Customer do 
    begin 
    FirstName := 'John'; 
    LastName := 'Smith'; 
    EventDate := 'Grimworth'; 
    SeatNumber := '1'; 
    PhoneNumber := '1'; 
    Adress := '7 Park Drive'; 
    end; 

    // Write the data to the file 
    Write(f, Customer); 
    CloseFile(f); 
end; 

有一點是任何現有數據。它將從文件的開頭開始寫入,因此您應該調查Seek

+0

哇哦,男人謝謝你,夥計我真的很努力地認真對待這個謝謝 – user3710090

+3

只需要注意,TCustomer字符串字段必須聲明爲ShortStrings。這是一種將數據存儲在文本文件中的過時技術。 –

+0

如果有人想知道要使用什麼,請搜索CSV,XML和JSON存儲。 –