![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Код:
procedure TForm1.Button5Click(Sender: TObject);
var i:integer;
begin
Seek(NoteFile, pos);
Truncate(NoteFile);
Button2.Enabled:=false;
if pos<>0 then dec(pos)
else
begin
Button5.Enabled:=false;
ClearDate;
end;
if pos>=0 then
begin
for i:=pos+1 to FileSize(NoteFile)-1 Do
begin
Seek(NoteFile,i);
Read(NoteFile, NoteData);
Seek(NoteFile, i-1);
Write(NoteFile, NoteData);
end;
Seek(NoteFile, FileSize(NoteFile) -1);
Truncate(NoteFile);
end;
Seek(NoteFile, pos);
Read(NoteFile, NoteData); ShowRecord;
if pos=-1 then
begin
Button1.Enabled := false; {Кнопка возвращения назад}
end;
end;P.S А какую позицию принимает pos если файл пуст? Считывание файла начинается с 0 позиции? |
|
#2
|
|||
|
|||
|
http://www.vihv.org/index.php?e=CodeSmells
лечится или рефакторингом или переписыванием с нуля |
|
#3
|
|||
|
|||
|
А поправить код этот никто тут не может?
|
|
#4
|
||||
|
||||
|
Этот код тяжело "подправить". Он неполный, пиши с нуля.
|
|
#5
|
|||
|
|||
|
Могу попробовать...
Ну мне нужны ответы на некоторые вопросы: Какую pos имеет пустой? Какой Pos у первой записи в файле? Для того чтобы написать правильно код мне нужно разобрать: а)Строка является единственной строкой в файле б)Строка является последней в файле в)Стока является началом или серединой файла(Вроде отличий между этими 2 случаем нет на мой згляд...) Правильно? |
|
#6
|
||||
|
||||
|
Неужели тяжело справку почитать?
Цитата:
Код:
var
S : string;
begin
S := ' 123.5';
{ Convert spaces to zeros }
while Pos(' ', S) > 0 do
S[Pos(' ', S)] := '0';
end; |
|
#7
|
|||
|
|||
|
Цитата:
А по делу Имеем типизованый файл, тогда Если FileSize(NoteFile) равно нулю, то файл пустой. У первой записи позиция равна нулю. У последней записи позиция равна FileSize(NoteFile)-1. |
|
#8
|
|||
|
|||
|
http://dump.ru/file/5399001
Вот вся программа,с не рабочим удалением |
|
#9
|
|||
|
|||
|
|
|
#10
|
|||
|
|||
|
Помогите,я перепробовал все ,что бы заставить кнопку работать как надо,но ничего не получается.
Мне кажется ,что этот глюк происходит из-за использования Truncate,но кроме него мне кажется ничего использовать нельзя. Delete вроде только в строковых типах юзается... |