|
0 / 0 / 0
Регистрация: 26.01.2018
Сообщений: 15
|
|
При чтении текстового файла выдает иероглифы26.01.2018, 18:35. Показов 14849. Ответов 26
Метки нет (Все метки)
при чтении из csv файла выдает в memo иероглифы. Кодировка тут явно не причем так как не показывает даже цифры и англ. текст.
читаю BlockRead(F, PChar(StrBuff)^, SizeFile); где StrBuff:String а F:file при выводе StrBuff в memo показывает иероглифы. Подскажите плиз что делать уже весь инет облазил Добавлено через 6 минут забыл отметить что читаю побайтно Reset(F, SizeOf(Char)); Подозреваю что у меня в memo выводится бинарный код, но как перевести его в нормальный текст не могу понять
0
|
|
| 26.01.2018, 18:35 | |
|
Ответы с готовыми решениями:
26
Сделать, чтобы при чтении из текстового файла данные записывались в определенные колонки в ListView Ошибка при чтении из файла Ошибка при чтении файла |
|
Почетный модератор
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
|
||
| 26.01.2018, 19:12 | ||
|
Добавлено через 2 минуты В Делфи эти файлы текстовые var f:TextFile.
0
|
||
|
0 / 0 / 0
Регистрация: 26.01.2018
Сообщений: 15
|
|
| 26.01.2018, 19:17 [ТС] | |
|
textfile - не хочет открываться для побайтного чтения SizeOf(Char) выдает ошибку несовместимости типов.
А фаил в 2 гига эксель осилить не может
0
|
|
|
Почетный модератор
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
|
|
| 26.01.2018, 19:20 | |
|
Зачем Вам побайтовое чтение? Файлы CSV читаются построчно.
0
|
|
|
Заблокирован
|
|
| 26.01.2018, 22:27 | |
|
Да причём тут как читать? Скорее всего проблема в кодировке.
CSV 2 гига? Что это за таблица такая? Добавлено через 5 минут И вообще, кусок файла выложите. Я посмотрю что с ним делать. Лично у меня этот формат прекрасно читается. Но выводить то надо не в мемо а в таблицу, если не ошибаюсь
0
|
|
|
Модератор
|
||
| 27.01.2018, 06:57 | ||
|
Igor88878, формат scv - обычный текстовый формат для импорта/экспорта данных в Excel, просто каждое поле отделено от другого символом ";". Ключевое слово тут - "текстовый", поэтому ни к чему тут вся эта паскалевская заумь с поблочным чтением...Ну, а с размером - это что-то неправдоподобное... Какой же Excel поднимет текстовый файл на 2 ГБ, это сколько же строк-то там? А Excel сколько строк понимает? (для справки - 1 048 576) Добавлено через 1 минуту
1
|
||
|
Заблокирован
|
|
| 27.01.2018, 10:23 | |
|
Без проблем. Вывод огромных файлов делается подгрузкой по частям. Но для этого надо завести потоки.
Проблема скорее всего в том что файл в формате UTF-8 Сомневаюсь чтоб эксель делал ANSI К тому же не указана версия Delphi Если файл в ANSI то проблема может возникнуть только в юникодовской версии, поскольку задан тип string. Если версия юникодовская то файл в UTF-8 Если проблемы там и там то точно UTF-8 Надо попросту открыть файл в ворде и посмотреть что за кодировка и тогда можно уже решать и давать советы.
1
|
|
|
0 / 0 / 0
Регистрация: 26.01.2018
Сообщений: 15
|
|
| 27.01.2018, 11:14 [ТС] | |
|
господа, я конечно не профи, но причем тут эксель причем тут кодировка? давайте абстрагируемся от CSV если просто взять текстовый фаил написать в нем "123" (согласитесь что кодировка тут не имеет значения) то при его открытии в memo или в greed будет выдавать иероглифы. тем методом что я описал. кодировку я перепробывал все для файла с текстом "123" это никак не влият на итог вывода в memo
Файлы в 2 гига выкладывются гос органами если кому интересно например декларации соотвествия товаров. 1 строка может быть больше килобайта строк сотни тысяч - может быть миллионов (не могу посчитать так как не отрыть фаил не одним известным мне редактором). В memo я вывожу просто для теста. С чтением побайтно проблем нет - фаил в 2 гига читается менее чем за 1 минуту даже побайтно. проблема с выводом Вопрос состоит в том как открытый для побайтного чтения фаил вывести в виде текста?
0
|
|
|
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,505
|
|
| 27.01.2018, 11:41 | |
|
если открыть файл в notepad++ тоже выводит иероглифы?
0
|
|
|
Заблокирован
|
|
| 27.01.2018, 13:25 | |
|
А потому что CSV это текстовый файл хранения таблицы.
И эксель это одно из популярных приложений, которое его создаёт. И в нём в качестве разделителя используется точка с запятой, хотя стандарт для CSV это запятая. Если вы напишите 123 то проблем не будет. А вот если если кроме 123 и латинского алфавита есть кириллица или другие языки. Японский там или ещё какой, тогда файл выходит в кодировке. И скорее всего UTF-8 Чтобы он отобразился, нужно специальное преобразование такого файла в юникод или в ANSI Всё зависит от версии Delphi или используемых компонентов. Для загрузки огромных файлов нужно организовать динамическую подгрузку. Для этого надо освоить потоки. И вообще такие огромные файлы - это бред. Тем более что больше 2 гигов они не могут быть в принципе. Почему? Для измерения данных обычно использую integer А граница это типа как раз 2 гига Для чтения данных болше 2 гиг надо оперировать с типом int64 И данные тем боле из госучереждений должны быть оптимизированы под это обстоятельств, по той причине, что хотя новое компы и оси есть, но должна быть поддержана совместимость со старыми... Так что если вам всё же открыть... Нужно во-первых все integer где это допустимо переделать в Int64 Потом открыть файловый поток. FileStream Организовать буфер с небольшим количеством данных в MemoryStream Из FileStream вырезать нужный кусок и скопировать его в MemoryStream В MemoryStream проверить кодировку и, если надо преобразовать её в нужную. Потом MemoryStream загрузить куда надо. В Memo или таблицу. Если надо дальше, опять вырезать нужный кусок и опять повторить.... И опять про кодировку. Если у вас не Delphi 7 а юникодовская версия Delphi преобразование необходимо в любом случае Стандарт UTF-16 То есть если у вас только латинские буквы, цифры и стандартные знаки, приписывайте в старший байт нули При этом надо учитывать, что размер данных вырастет в 2 раза Впрочем существуют стандартные процедуры преобразования.
0
|
|
|
0 / 0 / 0
Регистрация: 26.01.2018
Сообщений: 15
|
|||
| 29.01.2018, 12:20 [ТС] | |||
|
кодировку я пробывал любую на фаил "123" она никак не влияет. "Впрочем существуют стандартные процедуры преобразования." - о такой процедуре как раз и хотелось бы узнать. Какой процедурой можно преобразовать байт код для корректного его вывода в memo или greed? типа bytetotext или что нить типа того? Добавлено через 6 минут Кстати если кому интересно то пример CSV такого порядка размеров можно скачать тут http://fsa.gov.ru/opendata/7736638268-rds/
0
|
|||
| 29.01.2018, 12:27 | ||||||||
Добавлено через 46 секунд все повиснет и работать будет не возможно
0
|
||||||||
|
0 / 0 / 0
Регистрация: 26.01.2018
Сообщений: 15
|
||
| 29.01.2018, 12:32 [ТС] | ||
|
0
|
||
|
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,505
|
|
| 29.01.2018, 12:48 | |
|
можете выложить кусочек файла, где-нибудь строк 20-25?
0
|
|
|
0 / 0 / 0
Регистрация: 26.01.2018
Сообщений: 15
|
|
| 29.01.2018, 12:59 [ТС] | |
|
Выкладываю. 8 строк только помещается в 20кб. Просьба переименовать в CSV (если хотите просмотреть в excel) Так как тут не дает выкладывать csv
0
|
|
|
Заблокирован
|
|
| 29.01.2018, 13:09 | |
Сообщение было отмечено Igor88878 как решение
Решение
О боже..
Вы тут хором меня за дурака держите? Я вам писал а вы только других слушаете? Ещё раз У вас ANSI Делфи у вас юникодовская. Вот потому иероглифы. Следовательно надо или тип StringANSI или преобразовать ваш файл в юникод. Была бы у вас Delphi 7 проблем бы не было. Попробуйте ваш этот файлик затащить в блокнот и сохранить как юникод и откройте в своей проге. Никаких иероглифов быть не должно
0
|
|
|
0 / 0 / 0
Регистрация: 26.01.2018
Сообщений: 15
|
||
| 29.01.2018, 13:14 [ТС] | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 26.01.2018
Сообщений: 15
|
||
| 29.01.2018, 13:22 [ТС] | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 26.01.2018
Сообщений: 15
|
||
| 29.01.2018, 13:33 [ТС] | ||
|
Коллега оказался прав. Просто у меня никак не укладывалось в голове что английские символы и цифры могли быть как то зависимы от кодировки. AnsiString помогло. Благодарю за помощь!
0
|
||
|
Заблокирован
|
|
| 29.01.2018, 13:42 | |
|
utf-8 не поддерживается напрямую. Опять же требуется юникод. А это UTF-16
utf-8 - это побайтовый формат. Чтобы его прочитать существует функция utf8ToWide точнее не помню с лёту... И потом, для вашей задачи лучше вообще забыть о юникоде и использовать обычные компоненты. И вообще делать на 7ом Delphi да, иероглифы останутся, но это не критично. Все поиски замены сортировки удаление и любые другие операции прекрасно реализуются на ANSI компонентах Для того чтобы отобразить результат в должном виде нужно всего лишь выводить строки через преобразователь в юникод в юникодовский компонет Ещё раз. Все юникидовские версии Delphi используют UTF-16 Если ващи гигантские файлы перевести в этот юникод они станут в 2 раза больше. utf-8 тоже, но поменьше. Но у вас файл в ANSI Я не знаю, есть ли возможность переключить из юникода в АNSI в старших версиях, я просто в них не работал и не буду работать... 64битные приложения нужны для грандиозных проектов... и мои запросы намного скромнее... хватает 32 бит
0
|
|
| 29.01.2018, 13:42 | |
|
Помогаю со студенческими работами здесь
20
Ошибка при чтении из файла Ошибка при чтении файла Trim не работает при чтении из файла?
Ошибка при чтении из файла (reset) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|