Показать сообщение отдельно
  #2  
Старый 17.06.2010, 23:09
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

К сожалению, у тебя ничего так не получится. Дело в том, что в тестровом файле реально место для дописывания в середину не зарезервированно. Поэтому придется файл читать целиком, исправлять и перезаписывать заного. Я бы на твоем месте написал бы пару процедур для чтиени/разбора файла в массив записей и сохранения из массива. Можно еще проще сделать. Загрузить все в TStringList и адресоваться в нем N*7 + C.

Код:
procedure SetResult(AFileName, ALastName, AFiestName, AGroup, APass : String; AResNum : Integer; AData : String);
var
  I : Integer;
  L : TStringList;
begin
  L := TStringList.Create;
  L.LoadFromFile(AFileName);
  For I := 0 To L.Count / 7 Do
    Begin
       If (ALastName = L[I*7]) And
          (AFirstName = L[I*7+1]) And
          (AGroup = L[I*7+2]) And
          (APass = L[I*7+3]) Then
         Begin
            L[I+4+AResNum-1] := AData;
            Break;
         End;
    End;
  L.SavetoFile(AFileName);
end;

Код требует заполнения всех строк. Там, где нет данных, надо поставить пустую строку в файле. Ну и, конечно, код не проверяет наличие ошибок и корректность введенных данных, если надо - сам допишешь.
Ответить с цитированием