Хобот, ты конечно красава. У тебя есть пример рабочего кода, который ты точно проверил, и он работает?
Про GET и PUT я уже прочитал, но нихрена не понял как они работают. Дайте примеров кода.
Не возражаю против переноса моих сообщений в нужную тему.
Хобот, ты конечно красава. У тебя есть пример рабочего кода, который ты точно проверил, и он работает?
Про GET и PUT я уже прочитал, но нихрена не понял как они работают. Дайте примеров кода.
Не возражаю против переноса моих сообщений в нужную тему.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Код:HD7>PASDWK SHONC,TT:=SHONC SHOWONC OMSI PASCAL-1 RT11 V1.1G 4- -88 Page 1 Univ. Tasmania, Info. Sciences, Physics Bldg, Hobart 7001, site #72-12 LINE STMT LEVEL NEST SOURCE STATEMENT 1 PROGRAM SHOWONC; 2 VAR 3 SYM: CHAR; 4 INF: FILE OF CHAR; 5 BEGIN 6 1 1 1 RESET(INF,'ONC.DAT'); 7 2 1 1 WHILE NOT EOF DO 8 3 1 2 BEGIN 9 4 1 3 READ(INF,SYM); 10 5 1 3 WRITE(SYM:1); 11 6 1 3 END; 12 13 7 1 1 CLOSE(INF); 14 8 1 1 WRITELN; 15 9 1 1 END. ERRORS DETECTED: 0 FREE MEMORY: 9835 WORDS ERRORS DETECTED: 0 FREE MEMORY: 9835 WORDS HD7>RU SHONC OLEG_N_CHER DETECTED ! END OF FILE ON DEVICE - FROM PC 004542 HD7>TY ONC.DAT OLEG_N_CHER DETECTED ! HD7>TY SHONC.PAS PROGRAM SHOWONC; VAR SYM: CHAR; INF: FILE OF CHAR; BEGIN RESET(INF,'ONC.DAT'); WHILE NOT EOF DO BEGIN READ(INF,SYM); WRITE(SYM:1); END; CLOSE(INF); WRITELN; END. HD7>
Hunta, спасибо конечно, но то простыня необозримейшая. А попроще никак нельзя? Создавать вручную буфер, когда ОС уже сама создала буфер - получится двойная буферизация. И только потому, что файл не текстовый. Или я что-то не так понял?
- - - Добавлено - - -
Вот это:
за пример кода не катит, хорошо? Потому что непонятно, что такое P, ну и F тоже. К тому же, никто не проверял как оно работает с бинарными файлами. Но вообще доку по Паскалю мне цитировать не надо, я её уже видел.Код:WHILE NOT EOF(F) DO BEGIN P(F^); GET(F) END
Ничем не могу помочь
Ни RT, ни RSX не буферизует
Писал в конце 90-ых, я не буду сейчас разбираться, чего там и как
Оно РАБОТАЕТ (написано мной для меня, так что гарантируется) с двоичными файлами и создает файл в формате задачи для RSX (двоичный) из результата компиляции-линковки программы на Modula-2
- - - Добавлено - - -
Простыня - это несколько десятком листов (по 92 строки на лист) программы на фортране, состоящей из пяти-десяти подпрограмм. А этот пример - так, на один зуб.
Сократил простыню до более вменяемой, но оно всё равно глючит. Я конечно понимаю, что в моих глюках ковыряться никому не охота.
За помощь спасибо конечно, но я смотрю, тут всё в пещерном состоянии. Ещё из "приятностей" вскрылось то, что OMSI Pascal не понимает "_" в идентах. Стыдоба.
Хобот, ахтунг. Ты работаешь не с бинарными файлами, а с текстовыми. Там где нуль в конце. Ты в танке, Хобот. %) Вылазь уже из танка, что ли?
- - - Добавлено - - -Код:CONST BufLast = 511; TYPE BYTE = 0..255; BLOCK = 0..BufLast; BigBuf = ARRAY [BLOCK] OF BYTE; VAR ImgFile : FILE OF BigBuf; EofImgFile : BOOLEAN; BufR : BigBuf; IdxR, LimR : BLOCK; PROCEDURE ReadSector; BEGIN BufR := ImgFile^; GET(ImgFile); IdxR := 0; LimR := BufR[BufLast]; IF LimR = 0 THEN EofImgFile := TRUE; END {ReadSector}; PROCEDURE ReadByte (VAR x: BYTE); BEGIN IF EofImgFile THEN x := 0 ELSE BEGIN x := BufR[IdxR]; IdxR := IdxR + 1; IF IdxR = LimR THEN IF LimR = BufLast THEN ReadSector ELSE EofImgFile :=TRUE; END; END {ReadByte}; PROCEDURE StartRead; BEGIN EofImgFile := FALSE; ReadSector; END {StartRead}; VAR size: INTEGER; ch: BYTE; BEGIN Reset(ImgFile, 'Dur6.BMP', '', size); StartRead; WHILE NOT EofImgFile DO BEGIN ReadByte(ch); Write(CHR(ch)); END; Close(ImgFile); write('File closed!');
А чо - надо было описать как FILE OF 0..255 ? Нету же байтового типа. Я даже не уверен, что 0..255 будет храниться не в INTEGER.
Ладно, я поясню для Хобота, а то он наверно не понимает. Если читать из файла командой Read, то первый же встреченный нуль будет воспринят как конец файла, а Eof не сработает никогда. Проверено.
Не знаю, что такое RSX.
- - - Добавлено - - -
Hunta, как-то странно Вы определяете конец файла. По наличию двух нулей в конце блока. Это связано с тем, что файлы известной структуры? Мне вообще с байтами надо работать, а не со словами.
RSX-11M или RSX-11M-Plus. В отличии от RT нормально поддерживает большой объём памяти, многозадачность и многопользовательскость. У меня на аналоге Кванта-4с 4 мб памяти и большие "диски", смысла запускать RT нет вообще
Память ничего не подсказывает про структуру .LOD файла
Возможно. В документации на реализацию Modula-2 от Вирта описана структура
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)