powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / fopen - fread текстового файла
36 сообщений из 36, показаны все 2 страниц
fopen - fread текстового файла
    #40081791
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все работало прекрасно, пока однажды не ребутнули linux, который видимо загрузился с новым ядром и некоторые скомпилированные файлы стали работать странно.

Решил просто пересобрать глючные и тут выяснилось, что fopen с опцией "r" ("rt" ничего не меняет) + fread читают вроде как надо - бинарно, но оказывается раньше они читали по иному (как текст что ли).

Суть - есть некая утилита под виндой кодирующая файл. Алгоритм и "пароль" дешифровки известен, декодирую под Дебианом, но почему то считывание одного и того же файла происходит по разному (коды символов ЧАСТИЧНО в считанной строке получаю разные) - под виндой строка, под линуксом чистые бинарные символы.

Как правильно читать в "линуксах", чтобы получить аналогичное преобразование?
Не соображу никак...
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081793
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работать не с символами, а с байтами.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081795
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

да это понятно, виндовая утилита уже так сделана, мне нужно под нее подстроиться

вот пример как читает "на винде"
авторiDm9>'

как на самом деле выглядит бинарник
авторiDm !
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081796
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin
Dimitry Sibiryakov,

да это понятно, виндовая утилита уже так сделана, мне нужно под нее подстроиться

вот пример как читает "на винде"
авторiDm9>'


как на самом деле выглядит бинарник
авторiDm !&
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081797
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. вопрос как получить такую же как первая строка?

например, должен быть символ в DEC 57, но по факту там бинарный DEC 32
где происходит преобразование не понимаю
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081801
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для понимания увлекательный процесс существует. "Отладка" зовётся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081803
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

хорошо бы конечно отдалить, но от чужой утилиты у меня только кусок кода на дельфи, где происходит просто TFileStream.Read и там уже строка ДРУГАЯ, нежели в бинарнике

наверное преобразование типов где то происходит, но где... и почему раньше работало, а после обновления этих линуксов перестало...
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081805
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinи там уже строка ДРУГАЯ

Перестань выводить её как строку, выводи как массив байт в шестнадцатеричном виде.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081806
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

мне дали этот кусок от дельфи, чтобы я на gcc декодировку сделал, так что я не могу не выводить строкой, так сделано там, т.е. от TFileStream.Read мне некуда бежать, а почему он получает другую строку, не понимаю
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081808
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TFileStream.Read читает двоичный буфер, не надо бредить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081828
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin
Все работало прекрасно, пока однажды не ребутнули linux, который видимо загрузился с новым ядром и некоторые скомпилированные файлы стали работать странно.

Я думаю это практически нереально, если это не Астра Линукс. За такие фортели Торвальдс приступил бы к увольнениям всех причастных (даже косвенно причастных).
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081855
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

может и не реально, однако просто пересобранный стал больше где то на 3%
интереса ради скопировал на другой сервер - проблема та же
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081858
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin,

https://en.cppreference.com/w/c/io/fopen
File access mode flag "b" can optionally be specified to open a file in binary mode.
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081862
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

TFileStream.Read читает двоичный буфер, не надо бредить.

что то не получает он у меня двоичный, сделал просто
Код: pascal
1.
2.
3.
Buf: string;
SetLength(Buf, 80);
TFileStream.Read(Buf[1], 80)


и вуаля - часть символов в Buf отличается от бинарника
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081865
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Siemargl, флаг 'b' в POSIX (в т.ч. glibc) не имеет никакого эффекта и игнорируется
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081866
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,

да это все понятно, не понятно почему вдруг после ребута дебиана работать перестало, опцию b я до этого не использовал, но и с ней ничего не меняется, т.е. раньше он должен был читать как текстовый файл по идеи, но разницы в fopen нет с каких ключом открыть.
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081869
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может дело в кодировке!?
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081875
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin
может дело в кодировке!?

Buf: string; - юникодный же небось ?
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081879
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinи вуаля - часть символов в Buf отличается от бинарника

Повторяю медленно, специально для дельфинов: символы это не байты, смотреть надо на байты,
байты нельзя складывать в string, на символы в строке смотреть бесполезно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081882
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin
может дело в кодировке!?

Возможно у него раньше были сайд-эффекты на кодировке 1251. После обновления - utf8.
Почему раньше работало в комллексе - ХЗ. Возможно одиаковое (неправильное) поведения под Windows/Delphi
и Debian компенсировали друг друга и никто ничего не замечал.
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081885
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,

гугл говорит в дельфи 7 ansi 1 байт, поэтому вроде как читаю в gcc как unsigned char
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081887
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

может вы и правы, а что за обновление utf8 ?
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081888
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

да hex то понятно везде одинаковый, мне то надо чтобы в сях получался такой же результат как в дельфах, не важно верный он там или нет
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081892
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinмне то надо чтобы в сях получался такой же результат как в дельфах, не важно верный он там
или нет

Отлаживайся. Смотри чтобы на каждом шагу алгоритма байты в буфере получались одинаковые.
БАЙТЫ, а не буквы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081894
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin
mayton,

может вы и правы, а что за обновление utf8 ?

Я не знаю. Моё предположение что у тебя в стеке технологий не только fopen/fread а еще и работа с STDIN/STDOUT,
а они могут зависеть от локали.

Посмотри что у тебя сейчас выдает в линуксе.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081895
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

ru_RU.UTF-8
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081897
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А теперь было-бы как-то хорошо свичнутся на старое ядро и посмотреть.
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081909
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Хорошо, байты

Byte в дельфе = unsigned char???

добавляю переменные в вотч в дельфе и вывод printf("%u", p*) где unsigned char * p
местами совпадают, местами РАЗНЫЕ
как правильно сравнить???
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081920
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinместами совпадают, местами РАЗНЫЕ

Вот тут и надо смотреть в какой момент они становятся "РАЗНЫЕ". Может, они из разных
файлов читаются...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081925
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

wolverinместами совпадают, местами РАЗНЫЕ

Вот тут и надо смотреть в какой момент они становятся "РАЗНЫЕ". Может, они из разных
файлов читаются...

разные они сразу как только в дельфе
Код: pascal
1.
TFileStream.Read(p, size)


где правда p указатель на структуру, но это роли не играет, одни Byte одинаковые, одни разные относительно unsigned char
потому что код символа выходит, а они местами разные у этих типов
файлы одинаковые - я подменяю старую версию и новую - одна глючно (по крайней мере кодированный файл читает верно) но работает, вторая новая вообще не работает.

как еще сравнить кроме hex, который мне вообще не нужен (потому что он не используется в утилите чужой для шифрования), я не знаю.
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081927
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinгде правда p указатель на структуру, но это роли не играет

То есть о выравнивании элементов структуры ты даже не слышал никогда...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081928
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

структуры одинаковые по длине и порядку элементов, тут я ничего не менял когда работало
завтра сравню по hex побайтно, что считалось в дельфе, но что то мне подсказывает что там будет тоже самое, а отличие будет у Byte и unsigned char

спасибо за сочувствие )
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081931
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin
Dimitry Sibiryakov

TFileStream.Read читает двоичный буфер, не надо бредить.

что то не получает он у меня двоичный, сделал просто
Код: pascal
1.
2.
3.
Buf: string;
SetLength(Buf, 80);
TFileStream.Read(Buf[1], 80)


и вуаля - часть символов в Buf отличается от бинарника

наверное нельзя засовывать в string, но именно эта строка по Byte и выходит, даже если TFileStream.Read(p, 80), где p указатель на структуру и ее размер 80
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081979
коли это C++, то почему fopen, почему не это:
Код: plaintext
1.
ifstream infile ("file.ext", ios_base::binary);
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40081987
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопщим бесконечно переписывая вдруг переставший работать участок кода в разных вариантах - он начал работать, но стало выпадать в другом месте Ошибка сегментирования

и тут до меня начинает доходить, где то же я с подобным сталкивался - когда все работало, но что то дописав совершенно в другом месте или просто почему то выросший размер исполняемого файла начал глючить совершенно в другом месте алгоритма - это же ошибка работы с памятью где то... выход за границы или обращение не к тем участкам памяти

словом и ядро в общем случае не причем, тот же самый кривой код, но другого размера исполняемый файл (мне почему то попадается только при его росте) начинает лежать в памяти по другому и ошибка работы с указателями выстреливает.

зы. изначально странное поведение оказалось тем, что я на SQL сервере изменил алгоритм хранимой процедуры, это выяснилось как только я смог дойти с отладкой до этого участка )
...
Рейтинг: 0 / 0
fopen - fread текстового файла
    #40082067
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как внезапно в шифрованному файлу и Дельфи добавился "алгоритм в SQL сервере"...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / fopen - fread текстового файла
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]