Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443

Особенности работы с файлами в PureBasic

05.02.2023, 22:45. Показов 6858. Ответов 55
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Столкнулся с такой проблемой.
Надо считать весь контент текстового файла в строковую переменную, но не построчно (так легко), а сразу весь целиком.
Вот работающий код PowerBasic, который выполняет эту работу и демонстрирует считанную строку в месседжбоксе:

PowerBasic
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#COMPILE EXE
 
function pbmain () AS LONG
  Local str_Text As String
  Local lng_File_length As Long
 
  'Считываем весь файл целиком в память.
  Open "C:\test.txt" For Binary As #0
     lng_File_length = LOF(0)
     str_Text = Space$ (lng_File_length)
     Get #0, , str_Text
  Close #0
  msgbox (str_Text)
END function
А как сделать то же самое в PureBasic?
Чем заменить функцию GET, которой нет в PureBasic?
GET [#] filenum&, [RecPos], Var
Если опциональный RecPos опущен, считывание файла начинается с первого байта.

Вот набросал работающую заготовку. Что надо вставить вместо вопросительных знаков?
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
EnableExplicit
 
Define str_Text.s
Define lng_File_length.l
 
; Считываем весь файл целиком в память.
If OpenFile(0, "Test.txt")
    lng_File_length = Lof(0)
    str_Text = Space (lng_File_length)
;   ??????????????????????????????????    
;   ??????????????????????????????????
   CloseFile (0)
EndIf     
  MessageRequester("", str_Text)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.02.2023, 22:45
Ответы с готовыми решениями:

JApplet: особенности работы с локальными файлами
Если ли какие-то особенности, при работе с файловыми потоками из потомка JApplet? Можно ли писать в локальные файлы из swing-апплета?...

особенности работы ViewState
недавно начал изучать ASP. немного почитал про жизненный цикл и особенности работы ViewState. Возник следующий вопрос: есть страничка: ...

Особенности работы установщика
Здравствуйте. Если я создал установщик, который устанавливает сразу два проекта и в обоих проектах я переопределил метод Install, то...

55
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
14.02.2023, 16:13  [ТС]
Студворк — интернет-сервис помощи студентам
useful, ну да, может быть разработчики действительно устранят эту неприятность в будущих версиях, но лично мне она сейчас не особо мешает. По сравнению с FreeBasic, на изучение которого я потратил последние несколько месяцев, здесь рай земной
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
14.02.2023, 18:13
Цитата Сообщение от locm Посмотреть сообщение
Тип данных все равно не сообщит что хранится по указателю.
Сообщит. Если бы была возможность типизировать указатель, то указатель на целое — значит по указателю хранится целое, если указатель на double — значит по указателю хранится double.
Цитата Сообщение от locm Посмотреть сообщение
Остальное нужно смотреть через Отладчик -> Просмотр переменных.
Ну это плохо. Гораздо удобнее навести указатель мыши и получить значение, чем лазить в меню и открывать всякие окна.
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
14.02.2023, 20:33  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
Сообщит. Если бы была возможность типизировать указатель, то указатель на целое — значит по указателю хранится целое, если указатель на double — значит по указателю хранится double.
Но ведь венгерскую нотацию пока ещё никто не отменял

Впрочем, лично мне удобнее применять её расширенный самодельный вариант, например тот так:
PureBasic
1
Define str_Text.s, *str_Text
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
14.02.2023, 20:48
Цитата Сообщение от Power_Basic Посмотреть сообщение
Но ведь венгерскую нотацию пока ещё никто не отменял
Я хочу чтобы при наведении мыши на переменную отображался не только адрес, но и данные которые там лежат. Когда указатель нетипизирован, это невозможно.
0
Эксперт по электронике
7236 / 3414 / 348
Регистрация: 28.10.2011
Сообщений: 13,442
Записей в блоге: 7
14.02.2023, 21:11
Цитата Сообщение от Замабувараев Посмотреть сообщение
Сообщит. Если бы была возможность типизировать указатель, то указатель на целое — значит по указателю хранится целое, если указатель на double — значит по указателю хранится double.
В данном примере что сообщит тип указателя? Особенности работы с файлами в PureBasic
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
EnableExplicit
 
Define str_Text.s, *str_Text
Define lng_File_length.l, Format
 
; Считываем весь файл целиком в память.
If OpenFile(0, "Test.txt")
  lng_File_length = Lof(0)
  Format = ReadStringFormat(0)
  *str_Text = AllocateMemory(lng_File_length+2)
  If *str_Text
    ReadData(0, *str_Text, lng_File_length)
    str_Text = PeekS(*str_Text, -1, Format)
    FreeMemory(*str_Text)
  EndIf
  CloseFile (0)
EndIf     
MessageRequester("", str_Text)
В нем указатель используется только для хранения адреса. Тип не нужен.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Гораздо удобнее навести указатель мыши и получить значение, чем лазить в меню и открывать всякие окна.
Как вы себе представляете показ во всплывающем окне сотен тысяч элементов массива?
Для этого удобнее открыть окно и в нем смотреть.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Я хочу чтобы при наведении мыши на переменную отображался не только адрес, но и данные которые там лежат.
Это возможно.
Изображения
 
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
14.02.2023, 21:16  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
Цитата Сообщение от Power_Basic
Но ведь венгерскую нотацию пока ещё никто не отменял
Я хочу чтобы при наведении мыши на переменную отображался не только адрес, но и данные которые там лежат. Когда указатель нетипизирован, это невозможно.
Ну мы же наводим на переменную, у которой уже указан её тип как раз с помощью венгерской нотации или с помощью её каких-то самодельных аналогов.
Миниатюры
Особенности работы с файлами в PureBasic  
0
12 / 12 / 0
Регистрация: 02.07.2014
Сообщений: 124
15.02.2023, 17:21
По поводу всплывающей подсказки Фред ответил Fixed
https://www.purebasic.fr/engli... 35#p595835
1
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
15.02.2023, 17:27  [ТС]
Цитата Сообщение от useful Посмотреть сообщение
По поводу всплывающей подсказки Фред ответил Fixed
https://www.purebasic.fr/engli... 35#p595835
Интересная информация. Следовательно, начиная с версии 6.01b3, эта неприятность будет устранена, и это радует.
0
12 / 12 / 0
Регистрация: 02.07.2014
Сообщений: 124
15.02.2023, 17:41
c b4
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
16.02.2023, 16:36
Цитата Сообщение от locm Посмотреть сообщение
Это возможно.
Вместо того, чтобы разрешить типизировать указатель простыми типами данных, они решили для каждого типа данных сделать структуры, состоящие из одного поля с простым типом данных. Есть какое‐нибудь разумное объяснение этой двойной работе? Сами себе создали проблему — и сами героически её решили.
Цитата Сообщение от locm Посмотреть сообщение
Как вы себе представляете показ во всплывающем окне сотен тысяч элементов массива?
Для таких случаев всплывающее окно содержит полосу прокрутки.
Вот как массив отображается в VSCode:
2023-02-16_18-10-50.webm
0
Эксперт по электронике
7236 / 3414 / 348
Регистрация: 28.10.2011
Сообщений: 13,442
Записей в блоге: 7
16.02.2023, 18:30
Цитата Сообщение от Замабувараев Посмотреть сообщение
место того, чтобы разрешить типизировать указатель простыми типами данных
В бейсике для доступа к данным по адресу предназначены функции Poke и Peek. https://en.wikipedia.org/wiki/PEEK_and_POKE
В PB есть их реализации для различных типов данных https://www.purebasic.com/docu... index.html
Если вам нужны реализации в стиле Си, пишите на Си.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Для таких случаев всплывающее окно содержит полосу прокрутки.
Всплывающие окна Scintilla поддерживают прокрутку?
В любом случае это не самая лучшая идея. Если случайно навести курсор на массив, будут тормоза IDE из-за показа ненужных всплывающих окон с тысячами элементов массива.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
16.02.2023, 19:32
Цитата Сообщение от locm Посмотреть сообщение
Всплывающие окна Scintilla поддерживают прокрутку?
Конечно поддерживают, я даже выделил красным прокрутку:

Но вообще очень интересен подход «Scintilla не поддерживает = не нужно».
Наверное есть какая‐то проблема в PureBasic что он не может добавить такие всплывающие списки с прокруткой.
Цитата Сообщение от locm Посмотреть сообщение
Если случайно навести курсор на массив, будут тормоза IDE из-за показа ненужных всплывающих окон с тысячами элементов массива.
Студия не тормозит. Да и данные можно загружать только по мере отображения на экране.
Вот как это сделала корпорация Микрософт:
2023-02-16_18-13-00.webm
Никаких тормозов, а ведь это VB.NET, а не компилируемый в ассемблер язык.
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
16.02.2023, 20:27  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
Наверное есть какая‐то проблема в PureBasic что он не может добавить такие всплывающие списки с прокруткой.
Разумеется, отдельные недостатки везде можно найти. Но если, в целом, сравнивать PureBasic с FreeBasic, то PureBasic это цивилизация по сравнению с необитаемым островом, на котором приходится самому строить себе шалаш из подручного материала. PureBasic это Basic в полном смысле этого слова. Диалект дружелюбный к новичку, Познакомившись поглубже с "кухней" FreeBasic'а, у меня сложилось стойкое убеждение, что это некая повозка, которую тащат в разных направлениях те самые лебедь рак и щука
Но только в роли этих замечательных персонажей выступают некие непризнанные гении, которые ничуть не заботятся об удобстве пользователей, не удосуживаясь даже написать справку для своих многочисленным IDE, коих они уже наплодили столько, что похоже, что кроме них они никому не нужны. А если у программы один-единственный пользователь в лице самого разработчика, ну тогда понятно, почему справка не востребована
0
Эксперт по электронике
7236 / 3414 / 348
Регистрация: 28.10.2011
Сообщений: 13,442
Записей в блоге: 7
16.02.2023, 20:31
Цитата Сообщение от Замабувараев Посмотреть сообщение
Конечно поддерживают
Это список автозавершения.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Наверное есть какая‐то проблема в PureBasic что он не может добавить такие всплывающие списки с прокруткой.
Проблемы нет. Массивы прекрасно просматриваются в окне.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Вот как это сделала корпорация Микрософт
Не сравнивайте продукт майкрософта и IDE, написанную по сути одним человеком. Думаю что вы понимаете что студию разрабатывал не один и даже не десяток программистов, а гораздо большая команда?
1
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
17.02.2023, 15:41  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
Наверное есть какая‐то проблема в PureBasic
Начав изучение этого диалекта, не обнаруживаю пока ни одного существенного препятствия. Впечатление такое, что заботливый учитель собрал для меня-первоклассника ранец со всеми необходимыми инструментами и ведёт за руку в первый класс.
Единственный напряг, который, собственно, и удерживал меня до сих пор от изучения этого ЯП, это полное отсутствие в нём ООП. Следовательно, и технологию ActiveX (она же COM) уже никогда не получится использовать в этой среде. Но с другой стороны, часто ли я ей пользовался до сих пор? Категорический ответ: нет, ни разу в жизни! Ну то есть вообще ни единого раза! Ну да, это прикольно осознавать, что можно запустить, например Excel под контролем своей программы. Но не более чем прикольно. Ну как-то никогда лично для меня такой необходимости не возникало. Да и не просто это всё. Так что во всей этой технологии больше рекламного пафоса, чем реальной практической пользы. Хотя, разумеется, это исключительно с моей любительской точки зрения. Возможно, у профессионалов другое мнение на сей счёт.
0
Эксперт по электронике
7236 / 3414 / 348
Регистрация: 28.10.2011
Сообщений: 13,442
Записей в блоге: 7
17.02.2023, 15:59
Цитата Сообщение от Power_Basic Посмотреть сообщение
Следовательно, и технологию ActiveX (она же COM) уже никогда не получится использовать в этой среде.
Можно, но сложнее чем в VB или PowerBasic. Работа с книгой Excel
1
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
17.02.2023, 16:09  [ТС]
Цитата Сообщение от locm Посмотреть сообщение
Можно, но сложнее чем в VB или PowerBasic. Работа с книгой Excel
Посмотрел по ссылке. Приятно сознавать, что всё-таки имеется такая возможность. Но это уже "высшая математика" и для меня явно рановато
Да и сильно сомневаюсь, что вообще когда-нибудь понадобится. Хотя, с другой стороны, как говорится, никогда не говори "никогда"
0
Эксперт по электронике
7236 / 3414 / 348
Регистрация: 28.10.2011
Сообщений: 13,442
Записей в блоге: 7
17.02.2023, 21:28
Цитата Сообщение от useful Посмотреть сообщение
По поводу всплывающей подсказки Фред ответил Fixed
https://www.purebasic.fr/engli... 35#p595835
Там не про всплывающую подсказку и в b4 не исправлено.
Как я и предполагал, Фред вероятно не знает об этом потому что в английском и французском языках текст нормальный.
0
12 / 12 / 0
Регистрация: 02.07.2014
Сообщений: 124
18.02.2023, 07:38
Тогда я вообще не понял о чём речь.
Кто в состоянии воспроизвести проблему?
Написать на оф.форуме как бы не трудно.
0
Эксперт по электронике
7236 / 3414 / 348
Регистрация: 28.10.2011
Сообщений: 13,442
Записей в блоге: 7
18.02.2023, 12:52
Цитата Сообщение от useful Посмотреть сообщение
Тогда я вообще не понял о чём речь.
Смотрите скрин Особенности работы с файлами в PureBasic
При наведении указателя мыши на массив, появляется всплывающее окно с иероглифами. В настройках должен быть выбран русский язык.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.02.2023, 12:52

Особенности работы с COM-портом
...доброго времени суток, уважаемые форумчане! Имеется программа-драйвер COM-порта (архив COM-порт.rar и общий вид приложены). Свои функции...

Особенности работы fread
Решаю типовую задачу: считывание заголовка bmp-файла (точечного рисунка). Однако у меня ничего не получалось. В ходе расследования...

Особенности работы с обобщениями
Здравствуйте! Разбираюсь с обобщениями. Набросала такой код: public class Test { public static void Main() { // your code...

особенности работы c css
Доброго времени суток. Вопрос такой: Почему контейнер с кнопкой уезжает? <div></div> <div> ...

особенности работы @namelookup
как известно Syntax @NameLookup( ; username; itemtoreturn ) .... username Text or text list. Specify primary or alternate...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru