![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Нужна помощь по Делфи.
Существует текстовый файл в виде: фамилия имя группа пароль результат 1 результат 2 результат 3 фамилия имя группа пароль результат 1 результат 2 результат 3 фамилия имя группа пароль результат 1 результат 2 результат 3 и т.п. Задача: после прохождения теста N записать его результат в нужную строку в зависимости от данных регистрации. То есть заранее ни номера строки, ни данных для записи знать невозможно. Известен только номер теста. Подскажите, как это попроще реализовать? может кто сталкивался? Пока я представляю вариант перебора всех строк файла. Открываем файл на чтение. Читаем каждый раз первые 4 строки, сравниваем с данными регистрации, увеличиваем счетчик. Как только все данные совпали, закрываем файл. Открываем на запись. Как в нем поставить указатель на нужную мне строку? Спасибо! |
#2
|
|||
|
|||
![]() К сожалению, у тебя ничего так не получится. Дело в том, что в тестровом файле реально место для дописывания в середину не зарезервированно. Поэтому придется файл читать целиком, исправлять и перезаписывать заного. Я бы на твоем месте написал бы пару процедур для чтиени/разбора файла в массив записей и сохранения из массива. Можно еще проще сделать. Загрузить все в 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; Код требует заполнения всех строк. Там, где нет данных, надо поставить пустую строку в файле. Ну и, конечно, код не проверяет наличие ошибок и корректность введенных данных, если надо - сам допишешь. |
#3
|
|||
|
|||
![]() Спасибо Вам, добрый человек!!!! Немного под себя исправила и все работает!!!!!
![]() ![]() ![]() |