Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.09.27;
Скачать: CL | DM;

Вниз

Проблема с файлами   Найти похожие ветки 

 
djkondakov   (2009-07-21 14:14) [0]

Здравствуйте! Возникла проблема: при попытке открыть файл для чтения происходит ошибка 103 (Файл не открыт). Как можно исправить?


 
Dennis I. Komarov ©   (2009-07-21 14:16) [1]

исправь ошибку в 17-й строке


 
djkondakov   (2009-07-21 14:21) [2]


procedure TForm2.Button1Click(Sender: TObject);
var
 f, fsource: file of byte;
 fprom: textfile;
 strbuf: string;
 fname, fsize: string;
 buf: byte;
 pstn: longint;
 i, j: longint;
begin
 try
   {Чтение списка файлов}
   showmessage("Чтение списка файлов");
   assignfile(fprom, paramstr(0));
   reset(fprom);
   while not eof(fprom) do begin
     readln(fprom, strbuf);
     if strbuf="<Begin of Log File>" then begin
       while (not eof(fprom)) and (strbuf<>"<End of Log File>") do begin
         readln(fprom, strbuf);
         if strbuf<>"<End of Log File>" then begin
           fname:=copy(strbuf, 1, pos("#", strbuf)-1);
           listbox1.Items.Add(fname);
           fsize:=copy(strbuf, pos("#", strbuf)+1, length(strbuf));
           listbox2.Items.Add(fsize);
         end;
       end;
     end;
   end;
   closefile(fprom);
   showmessage("Чтение завершено");
   {Чтение списка файлов завершено}
   assignfile(fsource, paramstr(0));
   showmessage("Файл назначен");
   reset(fsource);
   showmessage("Файл открыт");
   {Подсчет позиции в файле}
   showmessage("Подсчет позиции");
   for I := 0 to Listbox2.Count - 1 do
     pstn:=pstn+strtoint(listbox2.Items[i]);
   pstn:=filesize(fsource)-pstn;
   showmessage("Подсчет завершен");
   {Позиция высчитана}
   {Начало распаковки}
   showmessage("Начало распаковки");
   seek(fsource, pstn);
   for j := 0 to Listbox1.Count - 1 do begin
     assignfile(f, listbox1.Items[j]);
     rewrite(f);
     for I := 1 to strtoint(listbox2.items[j]) do begin
       read(fsource, buf);
       write(f, buf);
     end;
     closefile(f);
   end;
   showmessage("Распаковка завершена");
   {Распаковка завершена}
 finally
   closefile(fsource);
 end;
end;


 
djkondakov   (2009-07-21 14:25) [3]

Процедура должна извлечь файлы, которые упакованы к конец экзешника. Сначала находится текстовый лог-файл, в котором указаны все упакованные файлы и их размеры, затем подсчитывается сумма их размеров, чтобы правильно найти начальную точку извлечения. Затем, собстно, извлекаются файлы.


 
djkondakov   (2009-07-21 14:26) [4]

Ошибка происходит где-то в районе строки, выделенной жирным, т.к. сообщение "Файл назначен" выводится, а "Файл открыт" - нет.


 
Anatoly Podgoretsky ©   (2009-07-21 14:32) [5]

> djkondakov  (21.07.2009 14:21:02)  [2]

В какой строке ошибка


 
djkondakov   (2009-07-21 14:37) [6]

35-я строка. Выделена жирным.


 
Игорь Шевченко ©   (2009-07-21 14:38) [7]


> Ошибка происходит где-то в районе строки


отладчика нет/не знаешь/пусть лохи пользуются ?

перед строкой вставить
FileMode := 0


 
Anatoly Podgoretsky ©   (2009-07-21 14:53) [8]


> 35-я строка. Выделена жирным.

У тебя нет прав


 
djkondakov   (2009-07-21 15:00) [9]

Так. Теперь в 46-й строке ошибка 131 (Первый раз о такой слышу - I/O Error 131). Отладчик заюзать не могу, так как приходится сначала "запихивать" в полученный экзешник файлы с помощью пакера, а потом уже запускать.


 
Anatoly Podgoretsky ©   (2009-07-21 15:22) [10]

Неумение пользоваться справкой, отладчиком и прочим.
Неверно выбран тип файлов, неверная работа с буферами.
Тут наиболее подходит TFileStream и чтение одним блоком.
А ошибка "отричательное позиционирование" с этим в отладчик, но лучше переписать все нафиг.


 
Юрий Зотов ©   (2009-07-21 15:26) [11]

assignfile(fprom, paramstr(0));
reset(fprom);


EXE открывает для чтения себя же?


 
Anatoly Podgoretsky ©   (2009-07-21 15:31) [12]

> Юрий Зотов  (21.07.2009 15:26:11)  [11]

При том в  текстовом режиме!  и с монопольными шаринг свойствами.
Это у него будет следующая проблема, когда сможет пробраться через остальной ужас.


 
djkondakov   (2009-07-21 15:36) [13]

Да, я нашел свою ошибку. И последующие тоже. И, кстати, что такого в том, что экзешник сам себя читает? Разве инсталлеры так не делают?


 
Юрий Зотов ©   (2009-07-21 15:43) [14]

> djkondakov   (21.07.09 15:36) [13]

В режиме чтения и не текстовый. А у Вас?


 
Anatoly Podgoretsky ©   (2009-07-21 15:45) [15]

> djkondakov  (21.07.2009 15:36:13)  [13]

В текстовом режиме?


 
djkondakov   (2009-07-21 15:48) [16]

Гхм... то есть exe нельзя прочитать как текстовик? Открыв упакованный файл в Notepad ++, я спокойно нашел свой лог-файл.


 
Anatoly Podgoretsky ©   (2009-07-21 16:01) [17]

> djkondakov  (21.07.2009 15:48:16)  [16]

Ну а теперь попробуй в Notepad без плюсов


 
djkondakov   (2009-07-21 16:10) [18]

Тоже нашел. Правда, был Notepad2 (Винда такая, Самлабовская).


 
Palladin ©   (2009-07-21 16:10) [19]


> то есть exe нельзя прочитать как текстовик?

нельзя прочитать используя TextFile


 
Игорь Шевченко ©   (2009-07-21 16:34) [20]

Palladin ©   (21.07.09 16:10) [19]


> нельзя прочитать используя TextFile


program ReadExe;

{$APPTYPE CONSOLE}

uses
 SysUtils;

var
 F: TextFile;
 S: string;
 I: Integer;
begin
 AssignFile(F, ParamStr(0));
 FileMode := 0;
 Reset(F);
 I := 0;
 while not Eof(F) do
 begin
   readln(F, S);
   Inc(I);
 end;
 writeln(I, " строк в ", ParamStr(0));
end.


13 строк в C:\Documents and Settings\Мои документы\Borland Studio Projects\TESTS\ReadExe\ReadExe.exe


 
Palladin ©   (2009-07-21 16:35) [21]

а ты попробуй


 
Palladin ©   (2009-07-21 16:36) [22]

хотя могу предположить, что механизм в какой то из версий, старше седьмой, поменяли...


 
Anatoly Podgoretsky ©   (2009-07-21 16:54) [23]

> Palladin  (21.07.2009 16:36:22)  [22]

Ты хочешь сказать, что они положили на текстовые файлы неизвестной длины, например на COMx



Страницы: 1 вся ветка

Текущий архив: 2009.09.27;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.012 c
2-1248380023
Евгений Р.
2009-07-24 00:13
2009.09.27
Как определить вид свойства по PPropInfo


15-1248427424
Empleado
2009-07-24 13:23
2009.09.27
Обмен данными между сервисом и GUI


2-1248355103
zorik
2009-07-23 17:18
2009.09.27
XML - как грамотно прочесть


2-1248157687
abun
2009-07-21 10:28
2009.09.27
Проблема с отладкой


8-1195024163
Den
2007-11-14 10:09
2009.09.27
Вывод изображения повер другого и сохранение всего этого в файл.