purebasic.info

PureBasic forum
Текущее время: Вт окт 23, 2018 9:10 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 450 ]  На страницу Пред.  1 ... 25, 26, 27, 28, 29, 30  След.
Автор Сообщение
 Заголовок сообщения: Re: Моя копилка. Переводы
СообщениеДобавлено: Пт июл 21, 2017 3:17 pm 
Не в сети
док

Зарегистрирован: Ср апр 16, 2014 5:56 pm
Сообщений: 113
Благодарил (а): 7 раз.
Поблагодарили: 6 раз.
Пункты репутации: 5
Пётр писал(а):
что этим пытаетесь доказать?
Код:
1
2
3
4
5
6
7
8
9
10
11
Structure stuctI
  a.s
  b.l
EndStructure
 
Dim MyArray(2)
 
MyArray(0)=@stuctI
MyArray(1)=@p.POINT
 
ShowMemoryViewer(@MyArray(), ArraySize(MyArray()) * SizeOf(Integer))

И в случае массива структур
Код:
1
2
3
4
5
6
7
8
9
Dim x.POINT(2)
 
x(0)\x = $10
x(0)\y = $20
 
x(1)\x = $50
x(1)\y = $80
 
ShowMemoryViewer(@x(), ArraySize(x()) * SizeOf(POINT))

Видна разница? Судя по памяти что содержится в массиве структур? Указатели на экземпляры структур или что-то другое?

Ну конечно, видна. Сравниваются структурированный и НЕструктурированный массивы, у них и расположение в памяти разное, не то что данные.
Я просто не сразу понял, что Вы шутите.
Смотрю, как Вы создали этот код и понимаю, что Вы прекрасно владеете терминологией, а здесь полезно немного поспорить, чтобы новички читали и учились. Ну и слава богу!
Пусть будет массив структур и экземпляры структур в нём. Пусть всегда будет солнце! Пусть всегда буду я! И все!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя копилка. Переводы
СообщениеДобавлено: Пт июл 21, 2017 4:53 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11303
Благодарил (а): 4 раз.
Поблагодарили: 436 раз.
Термин "массив структур" не мной придуман. Введите его в любом поисковике и посмотрите результаты.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя копилка. Переводы
СообщениеДобавлено: Пт июл 21, 2017 6:58 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 352
Благодарил (а): 1 раз.
Поблагодарили: 13 раз.
Пункты репутации: 0
Пётр писал(а):
Термин "массив структур" не мной придуман. .....


Добавлю, что и не в этом веке.... Ещё в PL/1 .... :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя копилка. Переводы
СообщениеДобавлено: Пт июл 21, 2017 10:45 pm 
Не в сети
док

Зарегистрирован: Ср апр 16, 2014 5:56 pm
Сообщений: 113
Благодарил (а): 7 раз.
Поблагодарили: 6 раз.
Пункты репутации: 5
Братцы, да разве плохое название? Чудо!
Вон направление тока тоже приняли от плюса к минусу - и ничего, все молчат!
Сделаем кошерную Справку, а пусть себе новички путаются, мы-то разберёмся!
У меня на худой конец английская припасена, мне всё нипочём.

ЗЫ. А вот потому, что у меня часто ни черта не получается, я думаю по-своему, и тогда догадываюсь в чём дело.
Вопрос к Петру:
Код:
1
2
3
4
5
6
7
8
9
10
11
Dim x.POINT(2)
 
x(0)\x = $10
x(0)\y = $20
 
x(1)\x = $50
x(1)\y = $80
 
ShowMemoryViewer(@x(), ArraySize(x()) * SizeOf(POINT))
Debug Hex(@x(0)\x)
Debug Hex(@x)


А что не так - в смысле, насколько существенно эта видна разница показывает моё заблуждение - что в ячейках массива хранятся ссылки на поля структуры?
Суть примера: в первом случае печатается дамп памяти экземпляров структуры, во втором - адрес ячейки (элемента) массива.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя копилка. Переводы
СообщениеДобавлено: Сб июл 22, 2017 5:53 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 352
Благодарил (а): 1 раз.
Поблагодарили: 13 раз.
Пункты репутации: 0
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
; обязательно начинайте всегда с
EnableExplicit
; и будет вам счастье(меньше каши в голове)
 
Dim x.POINT(2)
 
x(0)\x = $10
x(0)\y = $20
 
x(1)\x = $50
x(1)\y = $80
 
ShowMemoryViewer(@x(), ArraySize(x()) * SizeOf(POINT))
Debug Hex(@x(0)\x)
Debug Hex(@x)



К сожалению это Бэйсик а не Си и Бэйсик от талантливого но хулигана, где многие конструкции выглядят сомнительно но Фреду на это наплевать и это его личное дело.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя копилка. Переводы
СообщениеДобавлено: Сб июл 22, 2017 10:54 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11303
Благодарил (а): 4 раз.
Поблагодарили: 436 раз.
6519And писал(а):
А что не так - в смысле, насколько существенно эта видна разница показывает моё заблуждение - что в ячейках массива хранятся ссылки на поля структуры?
Если речь про
Код:
1
2
Debug Hex(@x(0)\x)
Debug Hex(@x)

То это получение указателя для чего используется @ (собака). Это стандартный метод получения указателя. Причем во второй строке будет адрес вовсе не массива, а никак не связанной с ним переменной x.
Давайте упростим задачу.
Код:
1
2
3
x=10
Debug x
Debug @x

В первой строке создается переменная со значением десять. А теперь ответьте, это значение хранится непосредственно в переменной, или в переменной только указатель на память где хранится значение?

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя копилка. Переводы
СообщениеДобавлено: Сб июл 22, 2017 5:02 pm 
Не в сети
док

Зарегистрирован: Ср апр 16, 2014 5:56 pm
Сообщений: 113
Благодарил (а): 7 раз.
Поблагодарили: 6 раз.
Пункты репутации: 5
Спасибо, jobless и Пётр!
Запутался я. У нас тут с sergey2400 небольшой спор вышел, и я написал что-то вроде:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  Structure Type
    Byte.b
    Word.w
    Long.l
    Float.f
    Symbol.s
  EndStructure
 
  Dim MyArray.Type(5)
 
  MyArray(0)\Byte=10:MyArray(0)\Word=10:MyArray(0)\Long=10:MyArray(0)\Float=10;:MyArray(0)\Symbol="10"
  MyArray(1)\Byte=10:MyArray(1)\Word=10:MyArray(1)\Long=10:MyArray(1)\Float=10;:MyArray(1)\Symbol="10"
 
  Debug @MyArray(1)-@MyArray(0)
  Debug Hex(@MyArray(0))
 
  ShowMemoryViewer(@MyArray(), ArraySize(MyArray()) * SizeOf(Type))


Так я пытался сравнить число байтов, занимаемых ячейкой структурированного массива.
Если раскомментировать, результат не изменится: 15 байт
Получается, что размер ячейки структурированного массива 15 байт? Или это не размер ячейки, а сумма соответствующих байтов в структуре?
Вьювер что показывает: память, занимаемую массивом, или занимаемую структурой? Похоже, что структурой.
Тогда что есть Debug Hex(@MyArray(0))?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя копилка. Переводы
СообщениеДобавлено: Сб июл 22, 2017 5:48 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11303
Благодарил (а): 4 раз.
Поблагодарили: 436 раз.
6519And писал(а):
Получается, что размер ячейки структурированного массива 15 байт?
Размер ячейки массива равен
Код:
1
Debug SizeOf(Type)


6519And писал(а):
Вьювер что показывает: память, занимаемую массивом, или занимаемую структурой?
Занимаемую массивом.

6519And писал(а):
Тогда что есть Debug Hex(@MyArray(0))?
Указатель на начало массива, т. е. адрес памяти с которого начинается массив.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя копилка. Переводы
СообщениеДобавлено: Сб июл 22, 2017 6:06 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 352
Благодарил (а): 1 раз.
Поблагодарили: 13 раз.
Пункты репутации: 0
Код:
1
2
3
4
5
6
7
8
9
10
11
12
Structure S01
  p00.a
  p01.s{10}
  p02.s{20}
EndStructure
Structure S02
  p00.a  
  p01.s
  p02.s
EndStructure
Debug SizeOf(S01)
Debug SizeOf(S02)



Предполагаю некоторых путает именно эта ситуация. Строки могут быть простыми (как в Си или вариант pb {размер в символах}) и как в данной реализации Бэйсика или например Паскаля сложными, и тогда в простых именно хранится сама строка или указатель на область в куче в сложных. С байтом ( .a ) например вариант один только сам байт занимающий 1байт. :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя копилка. Переводы
СообщениеДобавлено: Вс июл 23, 2017 12:19 am 
Не в сети
док

Зарегистрирован: Ср апр 16, 2014 5:56 pm
Сообщений: 113
Благодарил (а): 7 раз.
Поблагодарили: 6 раз.
Пункты репутации: 5
jobless писал(а):
Предполагаю некоторых путает именно эта ситуация.

Нет, дорогой jobless, тут хуже гораздо.
Если как Пётр говорит, то значит, я неправильно представлял себе устройство структурированного массива. В корне.
Мне казалось, что где-то существует структура. В неё можно что-то записать.
Затем объявляется массив, причём структурируется ею. Всё, теперь можно из массива читать/писать в ту структуру и увидеть ранее внесённое (я так был в том уверен, что ни разу не проверил). Более того, если объявить структурированную переменную, то и из неё также есть доступ к информации в структуре.
А теперь что получается? В момент создания структурированного массива САМ МАССИВ преобразуется как новая структура: с новым расположением в памяти и с другим принципом доступа к полям новоиспечённой структуры. А если сделать другой массив, аналогичный - будет ещё одна структура, в новом массиве?
То-то мне sergey2400 втолковывал про шаблоны.
Но если всё так и есть, получается, что разная интерпретация одних и тех же фактов (я ведь читал то же, что и все) приводит к противоположным результатам?
Ладно, спасибо всем. Пётр, можете удалить мои посты. Извините, что отнял время.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя копилка. Переводы
СообщениеДобавлено: Пт авг 18, 2017 11:19 am 
Не в сети
док
Аватар пользователя

Зарегистрирован: Вт янв 26, 2016 4:44 pm
Сообщений: 145
Благодарил (а): 50 раз.
Поблагодарили: 19 раз.
Пункты репутации: 0
Обновление справки, на основе Purebasic 5.44, добавил библиотеки до Movie, остальное в txt файле внутри.
https://yadi.sk/d/QGnlduuz3M7oDU


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя копилка. Переводы
СообщениеДобавлено: Вс окт 15, 2017 11:56 pm 
Не в сети
док
Аватар пользователя

Зарегистрирован: Вт янв 26, 2016 4:44 pm
Сообщений: 145
Благодарил (а): 50 раз.
Поблагодарили: 19 раз.
Пункты репутации: 0
Здравствуйте Пуриководы!

Небольшой опрос. Пишу статейку по Purebasic, в частности: типы, переменные, области видимости..
Если не трудно и позволяет время, попробуйте ответить (можно в личку) на один вопрос:

Как по-Вашему, сколько областей видимости (для переменной, массива, списка, карты) существует в Purebasic?
1) Локальная и глобальная, а остальные ( Threaded, Shared, Static) – это их модификации, либо даже вовсе не области видимости… этот вариант противоречит справке и инструментам IDE, где указано: «It can be global, local, shared, static or threaded».

2) По другому варианту: области видимости Global, Local, Main, Threaded, Shared, Static (здесь «Main»-локальная переменная основного кода, согласно инструментам IDE). Этот вариант согласуется с инструментами IDE, что очень хорошо, так как изучив справку можно без лишних вопросов пользоваться инструментами. Но к родной справке так же есть вопросы, например Static – это переменная по видимости не отличающаяся от Local, Shared – это также не область видимости, а переменная разделяемая между двумя областями кода.

Хотелось бы разобраться в этом вопросе досконально, чтоб не вводить никого в заблуждение.
Спасибо.

PS
Пока что мнения полностью противоположные и все аргументированные, я в растерянности.
Не поленитесь, напишите какое бы описание Вы хотели видеть в справке (в расширенной).


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя копилка. Переводы
СообщениеДобавлено: Пн окт 16, 2017 10:34 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 352
Благодарил (а): 1 раз.
Поблагодарили: 13 раз.
Пункты репутации: 0
http://citforum.ru/programming/c/h16.shtml

Просто для информации в процессе выбора терминологии. В тексте по ссылке вводится понятие класс памяти.

p.s. Такие тонкие моменты стоит разобрать с точки зрения точного соответствия базовым понятиям в Си и имеющим авторские особенности реализации.

p.p.s. Переводов документации Си огромное количество и следовательно к русскоязычной терминологии больше доверия(имхо)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя копилка. Переводы
СообщениеДобавлено: Пт дек 15, 2017 6:36 pm 
Не в сети
док
Аватар пользователя

Зарегистрирован: Вт янв 26, 2016 4:44 pm
Сообщений: 145
Благодарил (а): 50 раз.
Поблагодарили: 19 раз.
Пункты репутации: 0
Ну вот:
https://yadi.sk/d/N8vR-LEo3QehJj

Выкладываю дополненный перевод (5.44), закончил все библиотеки по SORT включительно + XML.
Внутри текстовый файл с пояснениями, в альтернативной версии пару новых статей....
Конструктивная критика приветствуется.
Спасибо всем кто помогает, особенно терпеливому Петру!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя копилка. Переводы
СообщениеДобавлено: Вс янв 07, 2018 3:52 pm 
Не в сети
док
Аватар пользователя

Зарегистрирован: Вт янв 26, 2016 4:44 pm
Сообщений: 145
Благодарил (а): 50 раз.
Поблагодарили: 19 раз.
Пункты репутации: 0
Всех с прошедшими праздниками!

Перевожу описание VectorDrawing, непонятки с функциями зеркального отражения системы координат, а именно: FlipCoordinatesX() и FlipCoordinatesY() .
Код:
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
 
If OpenWindow(0, 0, 0, 400, 200, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    CanvasGadget(0, 0, 0, 400, 200)    
   
    If StartVectorDrawing(CanvasVectorOutput(0))
      VectorFont(LoadFont(0, "Times New Roman", 60, #PB_Font_Bold))
 
      VectorSourceColor(RGBA(0, 0, 255, 128))
      MovePathCursor(50, 50)
      DrawVectorText("Test")
   
      FlipCoordinatesX(200)
   
      VectorSourceColor(RGBA(255, 0, 0, 128))
      MovePathCursor(50, 50)
      DrawVectorText("Test")    
   
      StopVectorDrawing()
    EndIf
   
    Repeat
      Event = WaitWindowEvent()
    Until Event = #PB_Event_CloseWindow
  EndIf
 


Кто ни-будь знает, почему в данном коде, функция FlipCoordinatesX(200) со значением 200 сигает на все 400?
Я было подумал, что используются разные единицы изменения, но применяя для CanvasGadget (а потом и ImageGadget) другие единицы измерения, я так и не добился, чтобы 200 соответствовало половине окна.

Подскажите, кто занимался ею, в чём секрет?


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 450 ]  На страницу Пред.  1 ... 25, 26, 27, 28, 29, 30  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB