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

Вниз

Ошибка EOF(file)   Найти похожие ветки 

 
Brat-2   (2003-01-01 19:52) [0]

Функция EOF возвращает конец некоторого exe файла, хотя до конца еще далеко. Как быть?


 
TTCustomDelphiMaster   (2003-01-01 20:18) [1]

Во первых покажи код.


 
Brat-2   (2003-01-01 20:23) [2]

...
While not EOF(f) do

begin
ReadLn(f,stroka);
p:=Pos("Text_for_search",stroka);

end;
...


 
Anatoly Podgoretsky   (2003-01-01 20:28) [3]

А ты уверен, что у тебя текстовый файл, видимо нет


 
TTCustomDelphiMaster   (2003-01-01 21:35) [4]


> конец некоторого exe файла

Так почему вы работаете с этим файлом как с текстовым.


 
Brat-2   (2003-01-01 22:26) [5]

А как быть? Мне просто в нем нужно найти слово длиной 6 символов и заменить на другое слово (тоже 6 символов).


 
Anatoly Podgoretsky   (2003-01-01 22:35) [6]

Так не работай как с текстовым файлом, а как с двоичным


 
Billy   (2003-01-02 05:54) [7]

Насколько я помню, в паскале eof возвращает true когда находит символ #26 - т. наз. символ EOF. (это при работе с f:textfile)
Здесь лучше вообще описать файл как f:file и пользоваться BlockRead. Сделаф буфер как array [0..511] of char можно пользоваться в ним все той же pos.
С наступившим :)


 
Brat-2   (2003-01-02 10:12) [8]

Получается нужно считывать по 511 байт. А если слово будет находится на стыке?


 
Brat-2   (2003-01-02 10:19) [9]

Приведите, пожайлуста код. Очень срочно нужно. Заранее благодарен.


 
Anatoly Podgoretsky   (2003-01-02 10:25) [10]

Зачем 511, считывай польностью весь файл в буфер или хитрый алгоритм, где буфер = 2*слово и считывание каждый раз по пол буфера


 
Brat-2   (2003-01-02 10:29) [11]

Файл может быть несколько Мб. Что весь файл загонять в буфер!? А глючить не будет?
А вот алгоритм n*слово проюзать можно, но что-то я не уверен, что глюков не будет. В тексте ведь есть всякие ТАB-ы и другие "грязные" символы. Не возникнет ли в связи с ними какого-нибудь "перескока"?


 
Anatoly Podgoretsky   (2003-01-02 10:32) [12]

А чего страшного, что несколько мегабайт, Windows поддерживает до 2 гб памяти. Ну не нравится весь читай кусками, алгоритм приведен выше, какие перескоки могут быть в буфере, это же не текстовый файл, а двоичный и в нем все символы (байты) равноправны включая EOF


 
Brat-2   (2003-01-02 10:35) [13]

Ok. Попробую. Спасибо за оперативность.


 
Brat-2   (2003-01-02 11:21) [14]

Пишу:
var
f: file;
buf: array [0..200] of char;

...

begin
AssignFile(f,"C:\filename.exe");
Reset(f);
Seek(f,1);
BlockRead(f,buf,200);
...
А оно ошибку пишет. Подскажите, ПЛЗ, как правильно написать?


 
Anatoly Podgoretsky   (2003-01-02 11:25) [15]

Нам это набрать в редакторе и запустить компляцию, что бы получть ошибку или как?
Посмотри также в хелпе синтаксис команды Reset для нетипизированных файлов. В принципе тут ошибки в каждой строке, за исключением AssignFile(f,"C:\filename.exe");


 
Brat-2   (2003-01-02 11:53) [16]

Нет, пошу просто привести правильный код. Дельфя у меня 6 с каким-то урезанным хлпом по процедурам ниче нету :((


 
Joisy   (2003-01-02 15:06) [17]

1. Postav breakpoint v kode i posmotri (F7/F8) na kakoy finksii oshibka
2.
var BytesRead: Integer
begin
...
Reset(f,1);
BlockRead(f, buf, sizeof(buf), BytesRead);

///
///
end;
3. buf luchshe brat 256/ 1024 /2048 i.t.d.


 
Brat-2   (2003-01-02 15:34) [18]

Все ок. В буфер читается. Но вот Стандартная функция POS не находит в нем строки, и STRLen(BUF) показывает всегда меньше, чем читается в буфер. По видимому, когда эти функции доходят до #13 или #0, то процесс прерывается. А как сделать, чтоб все было Ок?



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

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

Наверх




Память: 0.47 MB
Время: 0.008 c
3-36946
Matvey
2002-12-18 11:54
2003.01.13
Запрос к БД выборка от начала месяца


6-37234
Grigor
2002-11-12 17:34
2003.01.13
Как дождаться окончания выполнения внешнего приложение


1-37100
race1
2002-12-28 15:47
2003.01.13
mouse


4-37445
Spyx
2002-11-22 14:43
2003.01.13
Процессы


3-36924
13-ый
2002-12-17 10:42
2003.01.13
Деревья на основе БД





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