Хорошо, ребята, я пытался выяснить все возможные ошибки, которые совершаю, но сдаюсь ... Мне нужна помощь! Я пишу приложение для управления арендой для моей работы, и когда дата истекает, мое приложение удаляет имя из 2 текстовых файлов. Я написал 3 небольшие функции (процедуры), чтобы эта работа работала. Здесь:
Он загружается из файла date.dat и удаляет строку, содержащую имя сотрудника.
procedure remDate(emp: String);/// Removes employee from date file
var
pos1, i: integer;
dateList: TStringList;
begin
dateList:=TStringList.Create;
dateList.LoadFromFile('Data\dates.dat');
for i:=0 to dateList.Count-1 do begin
pos1:=AnsiPos(emp, dateList[i]);
if pos1<>0 then begin
dateList.Delete(i);
dateList.SaveToFile('Data\dates.dat');
end;
end;
dateList.Free;
end; //eo remDate
Он удаляет строку, содержащую имя сотрудника, из файла perm.dat.
procedure remPerm(emp: String);/// Removes employee from perm file
var
pos1, i: integer;
permList: TStringList;
begin
permList:=TStringList.Create;
permList.LoadFromFile('Data\perm.dat');
for i:=0 to permList.Count-1 do begin
pos1:=AnsiPos(emp, permList[i]);
if pos1<>0 then begin
permList.Delete(i);
permList.SaveToFile('Data\perm.dat');
end;
end;
permList.Free;
end; //eo remPerm
Этот склеивает их вместе. IsDue - это простая функция, которая сравнивает 2 даты и возвращает ИСТИНА, если дата сегодня или в прошлом.
procedure updatePerms;
var
empList: TStringList;
i: integer;
begin
empList:=TStringList.Create;
empList.LoadFromFile('Data\employes.dat');
for i:=0 to empList.Count-1 do begin
if isDue(empList[i]) then begin
remDate(empList[i]);
remPerm(empList[i]); (*) Here is where the error points.
end;
end;
empList.Free;
end;
Я получаю ошибку, когда доходит до remPerm в процедуре updatePerms. (*) Я получаю ошибку EStringList, выходящую за пределы (#). Многими попытками выяснилось, что это происходит только тогда, когда у сотрудника наступает срок родов сегодня. Прокомментируйте, если вам нужна дополнительная информация! Заранее спасибо, любая помощь очень ценится!