Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Вниз

Режим доступа к ТЕКСТОВОМУ файлу   Найти похожие ветки 

 
Sla ©   (2004-05-07 09:38) [0]

Подскажите как изменить режим доступа к сабжу?
Есть файл, уже открытый другой программой, я могу просмотреть его содержимое каким нить текстовым вьювером, но вот Reset(file) и последующий ReadLn(file) выдает ошибку. судя по всему он пытается получить монопольный доступ к файлу, что у него не получается.
Вот собсно мне нужно прочитать этот файл.
Переменная FileMode не работает для текстовых файлов.

Подскажите пожалуйста!
Заранее спасибо!


 
[lamer]Barmaglot ©   (2004-05-07 09:40) [1]

CreateFile?


 
TUser ©   (2004-05-07 09:41) [2]

Какую ошибку выдает? И удается ли его прочитать побайтно?


 
Семен Сорокин ©   (2004-05-07 10:12) [3]

TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone);


 
Sla ©   (2004-05-07 10:19) [4]

i/o error 32 выдает.

А можно как то читать из этого потока построчно?
Файл ОЧЕНЬ большой, порядка 50 мб, разбивать его на строки - уйдет слишком много времени....


 
ASMiD ©   (2004-05-07 10:26) [5]

На самом деле времени уйдет практически столько же как и при Readln поскольку ящик читает файл сначала в буфер, а потом проводит разбивку на строки и если строка не поместилась в буфере - читает следующий.
Мораль - делать то же самое самому.


 
Семен Сорокин ©   (2004-05-07 10:38) [6]

Sla ©   (07.05.04 10:19) [4]
так а что тебе стоит сделать TStringList и загрузить в него данные из TFileStream (через LoadFromStream)?


 
Sla ©   (2004-05-07 10:40) [7]

Что то не получается с потоками... никогда раньше не работал с ними, подскажите пожалуйста где тут ошибка?

var
f:TFileStream;
z: string;
begin

f:=TFileStream.Create("config.log", fmOpenRead or fmShareDenyNone);
f.Read(z,10);
Showmessage(z);
f.Free;


 
Sla ©   (2004-05-07 10:42) [8]

2 Семен Сорокин

Спасибо, я не знал что так можно. Как только разберусь с потоками - попробую.


 
[lamer]Barmaglot ©   (2004-05-07 10:43) [9]

f:=TFileStream.Create("config.log", fmOpenRead or fmShareDenyNone);
f.position:=0; ????
f.Read(z,10);


 
Семен Сорокин ©   (2004-05-07 10:43) [10]

Sla ©   (07.05.04 10:42) [8]
а вообще это не дело - ЛОГ в 50 Мб, нужно ограничивать как-то, разбивать, архивировать или еще что-то.


 
Sla ©   (2004-05-07 10:52) [11]

2 Семен Сорокин
Это понятно, дело в том что он и так разбивается...
Да и я думаю не принципиально, обрабатывать один файл на 50, или 5 файлов по 10 мб.


 
Sla ©   (2004-05-07 10:54) [12]

2 [lamer]Barmaglot
Не помогает... Access Violation говорит... :((

З.ы.
Народ, может кто заодно подскажет как быстрее всего обрабатывать файлы такой длины? Есть какие нибудь особые средства?


 
ASMiD ©   (2004-05-07 10:54) [13]

Не совсем.
Если будешь пользоваться TStringList и LoadFromFile - то есть существенная разница читать 1 раз 50метров или 5 раз по 10


 
Sla ©   (2004-05-07 10:58) [14]

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


 
Sla ©   (2004-05-07 11:07) [15]

Нароод!
Ау, ну подскажите кто нить, плиз, почему вот это не пашет?

var
f:TFileStream;
z: string;
begin

f:=TFileStream.Create("config.log", fmOpenRead or fmShareDenyNone);
f.position:=0;
f.Read(z,10);
Showmessage(z);
f.Free;


 
ASMiD ©   (2004-05-07 11:20) [16]

Так не пойдет.
z - массив от 0 до 255 в 0 пишется длина строки!!
Поэтому, если хочешь f.Read(z,10); то
 f.Read(z[1],10);
 SetLength(z,10);


 
Sla ©   (2004-05-07 11:28) [17]

Проблема решена, всем спасибо!



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

Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.034 c
1-1084223338
Serious Sam
2004-05-11 01:08
2004.05.23
Где ListView?


6-1081239426
Kremen
2004-04-06 12:17
2004.05.23
Как узнать, занят порт какой-либо программой или нет?


3-1083146032
samovar inc.
2004-04-28 13:53
2004.05.23
значение вставить в поле базы


3-1083077818
Азазелло
2004-04-27 18:56
2004.05.23
Вопрос по формированию бухгалтерских отчетов...


11-1071351084
SAGE
2003-12-14 00:31
2004.05.23
KOL не компилируется в FPC ???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский