Главная страница
    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.06 c
3-1083132235
Volodya_
2004-04-28 10:03
2004.05.23
Синхронизация данных


6-1081327421
<DeL.>
2004-04-07 12:43
2004.05.23
Скорость подключения


3-1083316895
Курдль
2004-04-30 13:21
2004.05.23
Апологетам "MS SQL Server" - что там с блокировками записей?


6-1080555134
Sur
2004-03-29 14:12
2004.05.23
как узнать IP


3-1083051197
kdv1977
2004-04-27 11:33
2004.05.23
фильтр БД





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский