Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Только чтение


Автор: Over G 19.5.2002, 13:54
Как открыть файл только для чтения, когда он запущен и прочитать из его конца 15 символов. Записывал при помощи BloackWrite(...) Пробовал через TMemoryStream - ошибка accessError

Автор: Vit 19.5.2002, 16:56
А что TFileStream если открыть только на чтение не работает?

Автор: Over G 19.5.2002, 17:05
Так вылезает ткакая же ошибка, что и у MemoryStream.

Автор: Vit 19.5.2002, 17:45
А через

assignfile()
reset()

то же самое?

Автор: Over G 19.5.2002, 18:22
а на строке Reset будет I/o Error. Файл ведь запущен...  ???

Автор: 362214 20.5.2002, 06:38
Попробуй так:

{$-}
reset()
{$+}

Автор: Over G 20.5.2002, 11:24
Не получается и так, он выдает пустую строку.... ???

Автор: Over G 21.5.2002, 19:32
Ну че никто помочь не может?

Автор: Vit 21.5.2002, 21:35
Уж не знаю в чем проблема, но этот код у меня работает(открывает файл уже открытый MS Word, и читает перые 14 байт):


Код

 var b:string[15];
begin
  with TFileStream.create('c:\MyFile.doc', fmShareDenyNone) do
    try
      read(b,14);
      showmessage(b);
    finally
      Free;
    end;

Автор: PILOT 21.5.2002, 22:00
А вот еще одно решение :)
Код

procedure TForm1.Button1Click(Sender: TObject);
type
AnyType = byte; // как тебе нужно
var
F: file of AnyType;
const
FName = 'D:/Exp.exe'; //запущенный файл
begin
begin
 AssignFile(F, FName); { File selected in dialog }
 FileMode:=fmOpenRead;
 Reset(F);
//  ...
//  ...
 CloseFile(F);
 FileMode:=fmOpenReadWrite;
end;
end;


СУВ.
ЗЫ. "...Если бы спорт приносил деньги, то на каждом турнике висело бы по два еврея."

Автор: Over G 23.5.2002, 20:43
Спасибо!
Но мне нужно прочитать последние 14 байт запущенного exe-файла, а не первые... Не  подскажите как?

Автор: Vit 23.5.2002, 21:42
Код
 var b:string[15];
begin
  with TFileStream.create('c:\MyFile.doc', fmShareDenyNone) do
    try
     seek(15,soFromEnd);
      read(b,14);
      showmessage(b);
    finally
      Free;
    end;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)