Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2014, 00:24   #11
Karateka
Пользователь
 
Регистрация: 25.05.2013
Сообщений: 33
По умолчанию

В принципе подумал, как обойти это. Когда у байта значение 13. То переменной не буду присваивать знак конца строки ansichar(13), а присваиваю переменной допустим такой знак ╗, который не появляется от ansichar(1-255). А когда разжимаю, если нахожу в тексте этот знак, то ставлю переменной значение 13. Сейчас буду проверять. Думаю должно прохелять.
Karateka вне форума Ответить с цитированием
Старый 13.06.2014, 20:09   #12
Karateka
Пользователь
 
Регистрация: 25.05.2013
Сообщений: 33
По умолчанию

Парни в общем никак не могу решить эту проблему. Помогите пожалуйста.

В общем сжимаю файл. В файле у меня два символа 'CP'. Символу C соответствует - 000011, символу P - 010000. Сжимаю из 8-ти бит в 6-ть. Получается первый байт равен - 00001101, второй байт - 00000000. Числовое значение первого байта равно 13. Беру от 13 символьное значение, это символ возврата каретки (по таблице ANSII), пишу его в файл, он записался.
Теперь разжимаю файл, читаю из него. В итоге символ возврата каретки не читается. В переменную записывается пустая строка.
Тоже самое и с символом 10(по таблице ANSII).

Как решить эту проблему?
Karateka вне форума Ответить с цитированием
Старый 13.06.2014, 20:22   #13
Karateka
Пользователь
 
Регистрация: 25.05.2013
Сообщений: 33
По умолчанию

Если возможно, как-то прочитать из файла, #10 и #13 символы? то подскажите пожалуйста.
Karateka вне форума Ответить с цитированием
Старый 14.06.2014, 01:11   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вам давным давно пора понять, что для чтения/записи бинарных файлов нужно пользоваться подходящими для этих файлов методами.
Это либо олдскул - BlockRead/ BlockWrite, либо (рекомендую) - TFileStream
Для этих методов абсолютно всё равно, что у Вас в файле #0, #8, #13, #10, #26 и т.д. и т.п.

Ну и разумеется, никаких визуальных контролов (типа Memo) для бинарных данных использовать НЕЛЬЗЯ.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.06.2014, 00:54   #15
Karateka
Пользователь
 
Регистрация: 25.05.2013
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Вам давным давно пора понять, что для чтения/записи бинарных файлов нужно пользоваться подходящими для этих файлов методами.
Это либо олдскул - BlockRead/ BlockWrite, либо (рекомендую) - TFileStream
Для этих методов абсолютно всё равно, что у Вас в файле #0, #8, #13, #10, #26 и т.д. и т.п.

Ну и разумеется, никаких визуальных контролов (типа Memo) для бинарных данных использовать НЕЛЬЗЯ.
Да но я работаю с txt файлом. BlockRead/ BlockWrite с ними не работают. Или есть способ как подогнать txt файл под BlockRead/ BlockWrite?
Karateka вне форума Ответить с цитированием
Старый 20.06.2014, 01:01   #16
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Karateka Посмотреть сообщение
Да но я работаю с txt файлом. BlockRead/ BlockWrite с ними не работают. Или есть способ как подогнать txt файл под BlockRead/ BlockWrite?
работают и отлично, просто файл не объявляйте как текстовый.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.06.2014, 01:07   #17
Karateka
Пользователь
 
Регистрация: 25.05.2013
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
работают и отлично, просто файл не объявляйте как текстовый.
Спасибо, запомню. Буду через них работать.
Karateka вне форума Ответить с цитированием
Старый 20.06.2014, 08:17   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Karateka
Да но я работаю с txt файлом.
на чтение - может быть.

Но! как только Вы его сжали:
Цитата:
Сообщение от Karateka Посмотреть сообщение
... Беру от 13 символьное значение, это символ возврата каретки (по таблице ANSII), пишу его в файл, он записался.
Теперь разжимаю файл, читаю из него.
полученный файл уже явно не текстовый.
Сомневаетесь в этом? Так откройте полученный файл в блокноте/редакторе FAR Commander/любом HEX вьевере.
Убедитесь, что после сжатия файл перестаёт быть текстовым, и, соответственно, методы работы с текстовым файлом не проходят.


Цитата:
Сообщение от Karateka
Буду через них работать.
Можно через них. Но я бы рекомендовал всё таки использовать TFileStream. Это более современно (BlockRead/BlockWrite - оставлены больше для совместимости со старым кодом), удобно, надёжно. В конце концов использование TFileStream - это даже проще!

но, с другой стороны, воля ваша, нравятся раритетные BlockRead/BlockWrite - можно и их использовать...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.06.2014, 18:41   #19
Karateka
Пользователь
 
Регистрация: 25.05.2013
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Но я бы рекомендовал всё таки использовать TFileStream. Это более современно (BlockRead/BlockWrite - оставлены больше для совместимости со старым кодом), удобно, надёжно. В конце концов использование TFileStream - это даже проще!
Спасибо за совет (TFileStream). Теперь все работает как часы! =)
Karateka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод данных в массив записей из текстового файла, сортировка по ключу, вывод в файл (на Паскаль) orandzheviyman Помощь студентам 8 21.01.2014 08:15
из текстового файл получить 5 наиболее часто встречающихся слов и число их появлений (на Delphi) sifa Помощь студентам 5 09.01.2012 18:34
на Файл текстового типа antojke Паскаль, Turbo Pascal, PascalABC.NET 2 14.12.2011 08:35
Как из текстового файла перенести данные в excel файл hunter05 Microsoft Office Excel 1 08.09.2009 06:30
из одного текстового файла виделить цифры и поместить в другой(пустой) файл serguna005 Паскаль, Turbo Pascal, PascalABC.NET 2 07.12.2008 20:55