我目前正在製作一個程序來生成Delphi 2010中的文件散列。作爲這一部分,我可以選擇創建用戶預設,例如,用戶可以創建/保存/刪除的哈希算法的預定義選擇。我有創建和加載代碼工作正常。它採用了組合框和從文件中裝載「fhpre.ini」,這裏面的文件是存儲在格式用戶預設: -德爾福 - 讀取文件到StringList,然後刪除並回寫到文件
PresetName
PresetCode(用0表示不散列和1個12位數的字串for do)
在應用程序加載時,它將該文件中的數據加載到ComboBox和一個Array中,ItemIndex與ComboBox的ItemIndex匹配數組中的對應的正確字符串0和1。
現在我需要實現一個功能,讓用戶從列表中刪除預設。到目前爲止,我的代碼如下,
procedure TForm1.Panel23Click(Sender : TObject);
var
fil : textfile;
contents : TStringList;
x,i : integer;
filline : ansistring;
filestream : TFileStream;
begin //Start Procedure
//Load data into StringList
contents := TStringList.Create;
fileStream := TFileStream.Create((GetAppData+'\RFA\fhpre.ini'), fmShareDenyNone);
Contents.LoadFromStream(fileStream);
fileStream.Destroy();
//Search for relevant Preset
i := 0;
if ComboBox4.Text <> Contents[i] then
begin
Repeat
i := i + 1;
Until ComboBox4.Text = Contents[i];
end;
contents.Delete(i); //Delete Relevant Preset Name
contents.Delete(i); //Delete Preset Digit String
//Write StringList back to file.
AssignFile(fil,(GetAppData+'\RFA\fhpre.ini'));
ReWrite(fil);
for i := 0 to Contents.Count -1 do
WriteLn(Contents[i]);
CloseFile(fil);
Contents.Free;
end;
但是,如果這是跑,我得到一個105錯誤,當它到達WriteLn部分。我知道代碼不是很好,例如沒有檢查具有相同名稱的預設,但是會出現,我想讓基本代碼先工作然後可以調整並添加額外的檢查等。
任何幫助,將不勝感激。
在任何Unicode版本的Delphi(D2009 +)中,請小心使用讀/寫(Ln)。這些函數不支持Unicode。 – 2011-01-09 09:45:45