Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Открыть уже открытый файл

Автор: petro_fm 22.01.2007 14:33

нужно открыть уже открытый файл,для чтения, пишу вот так :
AssignFile(f,fn.Text);
FileMode:=fmShareDenyNone ;
{$I-}
reset(f);
{$I-}

err:=IOREsult;
if err<>0 then begin
ShowMessage('Error open file # '+IntToStr(err));
exit;
End;
возвращает ошибку №32
FileMode пробовал разные, все равно не открывает , но
команды type, copy както этот файл открывают ???? а как ????


Автор: volvo 22.01.2007 14:48

У тебя файл (который пытаешься открыть) случаем не текстовый? Это первое... А второе - чтобы ТЫ мог открыть файл, то та программа, которая открыла его ДО тебя, должна была это сделать через fmShareDenyNone, что не запрещало бы тебе тоже открывать файл...

Автор: Гость 22.01.2007 14:58

да,файл текстовый (файл системного журнала 1С)
та программа, которая до меня открыла, не знаю КАК это зделала, НО
ТоталКомандер выевер эго открываэт, и type открывает, и копи копирует, а я его открыть не могу, АБЫДНА , ДА angry.gif

Автор: volvo 22.01.2007 15:04

Если файл текстовый, то FileMode менять бесполезно:

Цитата(Delphi Help)
FileMode variable
Description

The FileMode variable determines the access mode to use when typed and untyped files (not text files) are opened using the Reset procedure.


Попробуй так:
var f:TFileStream;
begin
f:=TFileStream.create('filename.txt', fmShareDenyNone);
memo1.Lines.LoadFromstream(f);
...


Автор: Гость 22.01.2007 15:13

memo1.Lines.LoadFromStream(f1);

Access violation at adress XXXXX in module XXXXX read of adress XXXXX .

вот так вот пишет гадина !low.gif

может еще какие идеи ????

Автор: Гость 22.01.2007 17:29

ооооо, Всемогущий ALL помоги незнающему, подскажи как же все таки type файлик открывает а я немогу !!!!

Автор: Malice 22.01.2007 19:20

Цитата(Гость @ 22.01.2007 13:29) *

ооооо, Всемогущий ALL помоги незнающему, подскажи как же все таки type файлик открывает а я немогу !!!!

Вот так попробуй:
var f:integer;

f:=fileopen('\....\1cv7.mlg',fmOpenRead);

fileread (f,буфер,размер);

FileClose(f);



Чтобы читать построчно только придется немного похлопотать smile.gif

Упс, проверил - не работает..

Автор: Гость 22.01.2007 20:01

плохо angry.gif
я перед запуском своєй программы копирую 1cv7.mlg в другой файл, но это ж ни дело angry.gif

Автор: hiv 22.01.2007 21:45

Цитата(Гость @ 22.01.2007 11:13) *
вот так вот пишет гадина !low.gif
может еще какие идеи ????
Есть идея!!! Может покажешь кусок кода где ошибка возникает (включая определение переменных).

Автор: Гость 22.01.2007 22:09

var f:textfile;
f1:TFileStream;
begin
AssignFile(f,fn.Text);
FileMode:=fmShareDenyNone ;
{$I-}
reset(f);
{$I-}
err:=IOREsult;
if err<>0 then begin
ShowMessage('Error open file # '+IntToStr(err));
exit;
End;
Здесь раз - #32

f:=TFileStream.create(fn.Text, fmShareDenyNone);
memo1.Lines.LoadFromstream(f); <<<<<< здесь два Access violation ......




Автор: volvo 22.01.2007 22:41

Ты что, именно этот код пытаешься запускать? Чего ты сюда постишь-то бред этот? Ты КОПИРУЙ а не впечатывай, ты ж ошибки вносишь!!! Как ты, например, создаешь TextFile через конструктор TFileStream?

В общем, я смотрю, по-хорошему не понимаем... Либо ты даешь код (не куски, а КОД, напиши маленькую программу, которая ТОЛЬКО пытается читать открытый файл, и запость ее сюда ПОЛНОСТЬЮ), который компилируется и запускается на выполнение, либо я закрываю тему... Балагана на форуме и без тебя хватает!

Автор: Гость 22.01.2007 23:11

опс, ошибочка вышла
f1:=TFileStream.create(fn.Text, fmShareDenyNone);
memo1.Lines.LoadFromstream(f1); <<<<<< здесь два Access violation ......

так вот

Автор: Malice 22.01.2007 23:36

прверил сейчас на 1с-вской базе, вариант Volvo нормально работает..

Автор: Гость 22.01.2007 23:42

йопт РАБОТАЕТ
пасиба Вольво !!!! !thanks.gif