Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
37 / 37 / 1
Регистрация: 07.09.2010
Сообщений: 752

Как лучше всего записать часть файла в область памяти (AllocateMemory)

30.07.2012, 12:37. Показов 4734. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Вопрос в теме.
Мне в голову приходит только считывать строки из файла, складывать их, и записывать как одну строку. Но это бред. Тем более если надо записать определенное число байт.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.07.2012, 12:37
Ответы с готовыми решениями:

Что лучше всего читать/смотреть где лучше всего практиковаться и как в принципе лучше всего учиться программированию
Здравствуйте,извините за вопрос не по теме но: уже около пол года изучаю С языки и начал понимать что я упустил некоторые моменты,не...

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

Какой прогой лучше всего протестировать модули памяти?
Собственно САБЖ...

31
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
01.08.2012, 21:50
Студворк — интернет-сервис помощи студентам
Что именно имеется в виду? Это?
Думаю да так удобнее, Le Thaw сможет заранее определить, какими кусками
передавать файл.

Я просто не помню уже, можно ли модифицировать в пюре участок памяти согласно структуре.
Т.е. не заводя переменную, а действуя через указатель, говорил я в общем то про это.
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,020
Записей в блоге: 7
01.08.2012, 22:02
Цитата Сообщение от >Quiet Snow< Посмотреть сообщение
Я просто не помню уже, можно ли модифицировать в пюре участок памяти согласно структуре.
Т.е. не заводя переменную, а действуя через указатель, говорил я в общем то про это.
Можно.
Модификация памяти по смещениям 10 и 30.
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Structure Send
  Name.s{10}
  Param.l
EndStructure
 
 
*Point = AllocateMemory(100)
If *Point
  
  *Send.Send  = *Point + 10
  *Send\Name  = "Клиент"
  *Send\Param = 10
  
  
  *Send       = *Point + 30
  *Send\Name  = "12345678"
  *Send\Param = 20
  
  ShowMemoryViewer(*Point, 100)
  
  FreeMemory(*Point)
EndIf
Или так, результат будет одинаков.
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Structure Send
  Name.s{10}
  Param.l
EndStructure
 
 
*Point = AllocateMemory(100)
If *Point
  
  *Send.Send  = *Point + 10
  *Send\Name  = "Клиент"
  *Send\Param = 10
  
  
  *Send       + 20  ; Смещение относительно первоначального, т. е. 30 байт от начала памяти.
  *Send\Name  = "12345678"
  *Send\Param = 20
  
  ShowMemoryViewer(*Point, 100)
  
  FreeMemory(*Point)
EndIf
2
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
01.08.2012, 22:12
Вот это вообще удобнейшая фишка, т.к можно позиционировать место памяти, с которым
работаешь с точностью до байта и не нужно думать, сколько занимает элемент структуры и
где он расположен, чудеса.
0
37 / 37 / 1
Регистрация: 07.09.2010
Сообщений: 752
01.08.2012, 22:49  [ТС]
А как принимать структуру?
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
01.08.2012, 23:11
Le Thaw, вот locm давал код.

Отправка структурированного блока данных
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
Structure Send
  Name.s{20}
  Param.l
EndStructure
 
Send.Send
 
Send\Name = "Клиент"
Send\Param = 10
 
; Допустим соединение уже установлено.
 
SendNetworkData(ClientID, @Send, SizeOf(Send))


А принимать так же

Приём структурированного блока данных
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Structure Receive
  Name.s{20}
  Param.l
EndStructure
 
Receive.Receive
 
; Допустим соединение уже установлено.
 
BytesOk = ReceiveNetworkData(Connection, @Receive, SizeOf(Receive))
If BytesOk <> DataBufferLength Or BytesOk = -1
    MessageRequester ("Ошибка", "Ошибка соединения!")
EndIf
 
Debug Receive\Name               ; Смотрим что пришло
Debug Receive\Param


Выдержка из справки
На стороне сервера 'Connection' определяет клиента, который послал данные. ClientID можно получить с помощью функции EventClient()).
На стороне клиента, 'Connection' определяется командой OpenNetworkConnection().
1
37 / 37 / 1
Регистрация: 07.09.2010
Сообщений: 752
01.08.2012, 23:24  [ТС]
Я просто хотел отправить элемент списка)
На Debug Receive\Name выдает ошибку памяти
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,020
Записей в блоге: 7
01.08.2012, 23:33
Цитата Сообщение от Le Thaw Посмотреть сообщение
Я просто хотел отправить элемент списка)
Смотря что хранится в этом элементе.
Если все данные находятся непосредственно в элементе, то можно отправить.

Добавлено через 2 минуты
Цитата Сообщение от Le Thaw Посмотреть сообщение
На Debug Receive\Name выдает ошибку памяти
Какая версия PureBasic?
В 4.61 этот код работает нормально.
PureBasic
1
2
3
4
5
6
7
8
Structure Receive
  Name.s{20}
  Param.l
EndStructure
 
Receive.Receive\Name = "1234"
 
Debug Receive\Name
1
37 / 37 / 1
Регистрация: 07.09.2010
Сообщений: 752
01.08.2012, 23:35  [ТС]
Если все данные находятся непосредственно в элементе, то можно отправить.
Думал что можно передать весь список) Но видимо это слишком жестко.
А почему строка не передается так?
Цитата Сообщение от Le Thaw Посмотреть сообщение
На Debug Receive\Name выдает ошибку памяти
Добавлено через 1 минуту
Так у меня тоже работает. А попробуйте это.
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
InitNetwork()
 
Global Port = 6667
 
CreateNetworkServer(0, Port)
 
*File = AllocateMemory(1000)
 
Structure Main
  ID.l
  Name.s
EndStructure
Main.Main
 
Repeat
  SEvent = NetworkServerEvent()
  If SEvent
    ClientID = EventClient()
    Select SEvent
      Case #PB_NetworkEvent_Data
        ReceiveNetworkData(ClientID, @Main, 1000)
        Debug Main\ID
        Debug Main\Name
    EndSelect
  EndIf
ForEver
End
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
InitNetwork()
 
Global IP.s = "127.0.0.1"
Global Port = 6667
 
Global Connection = OpenNetworkConnection(IP, Port)
 
Structure Main
  ID.l
  Name.s{20}
EndStructure
Main.Main
 
Main\ID = 1
Main\Name = "RaSet"
 
 
SendNetworkData(Connection, @Main, SizeOf(Main))
 
Delay(2000)
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,020
Записей в блоге: 7
01.08.2012, 23:40
Цитата Сообщение от Le Thaw Посмотреть сообщение
Думал что можно передать весь список)
Можно, но не весь сразу, а по кускам.
Список это такой объект, в котором один элемент находится в одной области памяти, а другой элемент, в другой области.
Вообще, связанный список, это ряд структур (число структур равно числу элементов списка).

Добавлено через 2 минуты
Цитата Сообщение от Le Thaw Посмотреть сообщение
А попробуйте это.
Есть существенная разница в структурах.

Цитата Сообщение от Le Thaw Посмотреть сообщение
Structure Main
ID.l
Name.s
EndStructure
Цитата Сообщение от Le Thaw Посмотреть сообщение
Structure Main
ID.l
Name.s{20}
EndStructure
В первом случае, в структуре хранится только указатель на строку (строка может быть очень длинной), а во втором, вся строка (длина строки не больше указаной у объявлении переменной, в нашем случае, 20 символов).
2
37 / 37 / 1
Регистрация: 07.09.2010
Сообщений: 752
02.08.2012, 21:56  [ТС]
Ааа... Понятно. Спасибо большое.

Добавлено через 21 час 45 минут
А как передать структурой переменную и выделенную память? До меня не доходит. Пробовал по разному.
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,020
Записей в блоге: 7
02.08.2012, 22:13
Цитата Сообщение от Le Thaw Посмотреть сообщение
А как передать структурой переменную и выделенную память? До меня не доходит.
До меня тоже не дошло что имелось в виду.
Для чего это нужно?

Добавлено через 2 минуты
А... понял. Не внимательно прочитал....
Нужно в выделенную память дописать данные структуры, пример, после чего отправить функцией SendNetworkData().
1
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
03.08.2012, 16:10
передать структурой переменную и выделенную память?
Заводить выделенный блок памяти больше на размер переменной(раз она структурирована).
И копировать данные из переменной в выделенную память.
Тут нужно понимать, куда копировать, если в начало, то тогда нужно данные
в выделенной памяти расположить после данных переменной(как это будет сделано в
программе не суть, перенести блок данных или просто загрузить куда нужно), а если в конец,
то достаточно просто скопировать переменную по смещению после данных.

В предыдущих постах я писал как это делать, там всё наглядно показано.

P.S: Ну или я не правильно понял вопрос, что весьма вероятно.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.08.2012, 16:10

Какой из антивирусов лучше всего подойдет для ПК, в котором памяти 1ГБ?
Поставила себе Касперский 2012. Он очень хорошо все находит,но он громоздкий слишком! все из-за него тормозить начало,все браузеры долго...

В область памяти с 0xF0 по 0x110 Записать значения
В область памяти с 0xF0 по 0x110 Записать значения 0x55,0x66,0x77,0x55,0x66,0x77.... Atmega 16

Из одного файла считать часть информации и записать в выбранное место второго файла
две задачи поставлено 1)из 1 файла считать 3-тию часть информации и записать в выбранное место 2-го файла (робота с текстом) 2)вывод на...

Как правильно записать опоздание функции через функцию-ножницы, если t!=0 при t>4? Как правую часть записать?
Нужно найти изображение оригинала. Всю суть проблемы написал в заголовке.

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


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru