|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
Как правильно открыть TXT файл для чтения, например чтобы запихнуть в TextBox или просто загрузить в массив строк17.09.2023, 18:23. Показов 3359. Ответов 82
Метки нет (Все метки)
Я ещё раньше не занимался этим вопросом с помощью API-функций, так как всегда работал с помощью стандартных методов VB6. А теперь, поняв фундаментальный недостаток VB6-метода (отсутствие поддержки юникода в именах файлов), я хочу научиться открывать/загружать стандартный текстовый файл с помощью API.
Итак, за это отвечает у нас функция ReadFile, но уважаемый The Trick, я посмотрел, загружает файлы каким-то странным, другим способом, через функции CreateFileMapping и MapViewOfFile, я если честно в этом ничего не понимаю. Смотрел описание этих функций так толком и не понял зачем их использовать вместо стандартного ReadFile.
0
|
|
| 17.09.2023, 18:23 | |
|
Ответы с готовыми решениями:
82
GDI+ как освободить файл или открыть только для чтения Как открыть доступ для чтения файла 'output.txt'? Как поток чтения (или записи) запихнуть в класс? |
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||
| 21.09.2023, 17:15 [ТС] | ||
|
testuser2, ну а если загрузить мегабайт 300 или 500 сам подумай. Целую секунду можно сэкономить.
Добавлено через 34 секунды Добавлено через 30 секунд И не у всех людей такие мощные компьютеры
0
|
||
| 21.09.2023, 17:18 | |||
|
Добавлено через 2 минуты
0
|
|||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|||
| 21.09.2023, 17:22 [ТС] | |||
|
Добавлено через 1 минуту Добавлено через 2 минуты testuser2, кстати если ты уж так любишь использовать String, то хотябы тогда используй String$ знак доллара, иногда, тоже может сэкономить кучу времени, на практике знаю, с долларом можно и пол секунды сэкономить даже
0
|
|||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 21.09.2023, 17:27 [ТС] | |
|
Чтобы программа работала быстрее всегда так же используй Mid$ вместо простого Mid, разница в скорости будет заметна, если обрабатывать текст десятками, а то и сотнями мегабайт данных
Добавлено через 1 минуту testuser2, а у меня 4 ядра и процессор вроде 3800 Мегагерц и всё равно медленнее, странно это конечно) Может в VB6 медленнее просто, не знаю) Добавлено через 2 минуты testuser2, хотя скорость в IDE VB6 и в EXE у меня одинаковая я посмотрел
0
|
|
| 21.09.2023, 17:30 | ||
|
0
|
||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|||||||
| 21.09.2023, 17:34 [ТС] | |||||||
|
testuser2, да и кстати String$ и Space$ имеет ограничение примерно на 500 Мб данных. В отличии от API. Хотя на самом деле строка должны быть до 2 Гб как минимум.
Добавлено через 1 минуту testuser2, сам посмотри:
VB очень даже отличный старичок) и программы работают быстро, если правильно и грамотно писать)
0
|
|||||||
| 21.09.2023, 17:37 | |
|
Не по теме: VB(VBA) в сфере макросов, абсолютный лидер по скорости и удобству, и конечно коду уже набито за 100 лет немеряно.
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 21.09.2023, 17:41 [ТС] | |
|
testuser2, так что теперь, для выделения строки, используй связку PutMem4 и SysAllocStringLen/SysAllocStringByteLen
0
|
|
|
Модератор
|
||||
| 21.09.2023, 18:29 | ||||
|
Добавлено через 1 минуту
0
|
||||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 21.09.2023, 18:31 [ТС] | |
|
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||||
| 21.09.2023, 18:51 [ТС] | ||||
|
Добавлено через 46 секунд Ну могу ещё три ChrB соединить но это одно и тоже получится Добавлено через 54 секунды Ну или байтовый массив, как ты предлагаешь и сравнивать первые три байта, но это одно и тоже будет. Добавлено через 2 минуты Думаешь MidB$(stringbuffer, 1, 3) медленно работать будет что ли. Думаю так же быстро как и сравнивать первые три байта из байтового массива. Добавлено через 7 минут Добавлено через 50 секунд Всё равно я регистрирую свою программу к перезапуску в случае сбоя Добавлено через 5 минут The trick, кстати говоря ты вот любишь использовать Space$ для выделения строки, а если у тебя зафелится эта команда? То вообще будет Run-time error 14 Недостаточно места в строке. Фиг ты проверишь хватит памяти или не хватит.
0
|
||||
|
Модератор
|
||||||
| 21.09.2023, 19:04 | ||||||
|
0
|
||||||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 21.09.2023, 19:26 [ТС] | |
|
The trick, я проверю насколько быстрее будет с массивом. На миллисекунд 10 может)
Добавлено через 15 минут The trick, переопределять границы массива лучше всего через ReDim Preserve или через просто ReDim?
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 21.09.2023, 19:50 [ТС] | |
|
The trick, переписал на байтовый массив - ничем не отличается по скорости вообще для 100 Мб
Добавлено через 2 минуты The trick, пробую теперь на 200 Мб и смотрю и вижу что мой первоначальный вариант со строкой оказался быстрее по скорости Добавлено через 50 секунд Может конечно медленно работает ReDim Preserve byte_array(FileSize - 1) но факт остаётся фактом что со строкой мой первый код работает быстрее у меня Добавлено через 1 минуту 842 ml строка 889 ml байтовый массив
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|||||||||
| 21.09.2023, 20:08 [ТС] | |||||||||
|
Так что зря ты мне посоветовал на байтовый массив переходить
Добавлено через 1 минуту Добавлено через 1 минуту The trick, ты мне советовал именно байтовый массив, ругая меня, что я использую строку. А оказалось что строка быстрее. Добавлено через 2 минуты Добавлено через 51 секунду The trick, вот, смотри сам:
The trick, ну вот я тебе и доказал, что ты был неправ, что массив быстрее будет Добавлено через 11 минут
0
|
|||||||||
| 21.09.2023, 20:08 | |
|
Открыть файл и загрузить содержимое в TextBox Как расшифровать файл dat или просто открыть его и вывести на экран Открыть для записи текстовый файл data.txt и записать в него полученный массив, закрыть файл Как открыть файл для чтения?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса
Калибровка параметров симбиотической модели: технический обзор
Содержание:
Введение
Постановка проблемы
Технические аспекты реализации
Процесс внедрения изменений
|
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0»
https:/ / ibb. co/ NnkGpfMd
Представленная интегрированная схема описывает непрерывную нелинейную. . .
|
|
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы
### Аннотация
Представлено исследование по разработке агентной модели микоризной. . .
|
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики
Контекст
Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
|
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии
Введение
Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
|
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np
class PlantAgent:
def __init__(self, name, strategy, initial_biomass):
self. name = name
self. strategy = strategy # "greedy" (широколиственные) или. . .
|