purebasic.info

PureBasic forum
Текущее время: Ср окт 18, 2017 7:46 pm

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




Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Работа с Editor Gadget
СообщениеДобавлено: Пт сен 22, 2017 9:55 pm 
Не в сети
профессор

Зарегистрирован: Вс авг 31, 2014 12:11 am
Сообщений: 379
Благодарил (а): 47 раз.
Поблагодарили: 18 раз.
Пункты репутации: 10
Люди, подскажите кто знает. Нужно скопировать весь список в отдельно выделенный кусок памяти. Объём, наверное правильней считать так:
Код:
1
2
3
4
size = 0
ForEach TEXT()
  size + StringByteLength(TEXT(), #PB_Ascii)
Next



Последний раз редактировалось knower Пт сен 22, 2017 10:00 pm, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с Editor Gadget
СообщениеДобавлено: Пт сен 22, 2017 9:58 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11033
Благодарил (а): 4 раз.
Поблагодарили: 373 раз.
Второй код http://www.purebasic.fr/english/viewtop ... 86#p441486

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с Editor Gadget
СообщениеДобавлено: Пт сен 22, 2017 10:15 pm 
Не в сети
профессор

Зарегистрирован: Вс авг 31, 2014 12:11 am
Сообщений: 379
Благодарил (а): 47 раз.
Поблагодарили: 18 раз.
Пункты репутации: 10
УРА! Пётр, спасибо БОЛЬШОЕ!. Соблазнился использовать пару чужих процедур (которые кстати очень часто фигурируют в разных вариациях), но с этим списком была загвоздка.
Вот полный код (может кому пригодится):
Код:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Procedure StreamMemoryIn_Callback(dwCookie, pbBuff, cb, *pcb.Integer)
  Static offset = 0
 
  If offset + cb <= MemorySize(dwCookie)
    ; we copy the complett buffer (pbBuff), size is cb
    CopyMemory(dwCookie + offset, pbBuff, cb)
    offset + cb ; offset
    *pcb\i = cb
  Else
    If offset = MemorySize(dwCookie)
      *pcb\i = 0 ; here is the finish
      offset = 0 ; offset to 0 for next order
    Else
      ; we copy the rest, smaller as pbbuff
      CopyMemory(dwCookie + offset, pbBuff, MemorySize(dwCookie) - offset)
      *pcb\i = MemorySize(dwCookie) - offset
      offset = MemorySize(dwCookie)
    EndIf
  EndIf
 
  ProcedureReturn 0
EndProcedure
 
Procedure Editor_StreamMemoryIn(ID, *mem, type = #SF_TEXT)
  Protected StreamData.EDITSTREAM
 
  StreamData\dwCookie = *mem
  StreamData\dwError = #Null
  StreamData\pfnCallback = @StreamMemoryIn_Callback()
  SendMessage_(GadgetID(ID), #EM_STREAMIN, type, @StreamData)
EndProcedure
 
 
NewList TEXT.s()
 
For i=1 To 1000
  AddElement(TEXT())
  TEXT() = "строка 1   ... 1234" + Chr(13) + "строка 2 ... zzzz" + Chr(13)
 
  AddElement(TEXT())
  TEXT() = "строка 3   ... 82032" + Chr(13) + "строка 4 ... wfdsv" + Chr(13)
 
  AddElement(TEXT())
  TEXT() = "строка 5   ... 1adfasdf" + Chr(13)
Next
 
 
OpenWindow(0, 0, 0, 500, 200, "copytext to EG", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
EditorGadget(1, 0, 0, 500, 200)
 
 
Define *mem = AllocateMemory(10)
Len = 10
Pos = 0
 
If *mem
  ForEach TEXT()
    Size = StringByteLength(TEXT(), #PB_Ascii)
    If Pos+Size+4>Len
      Len+Size+4
      *mem = ReAllocateMemory(*mem, Len)
    EndIf
    Pos+PokeS(*mem+Pos, TEXT(), Size, #PB_Ascii)
  Next
 
  Editor_StreamMemoryIn(1, *mem)
  FreeMemory(*mem)
EndIf
 
 
Repeat
  Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow


Пётр, проверь пожалуйста, так будет корректно сделать то о чём спрашивал?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с Editor Gadget
СообщениеДобавлено: Пт сен 22, 2017 10:34 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11033
Благодарил (а): 4 раз.
Поблагодарили: 373 раз.
Зачем это понадобилось если для загрузки текста в EditorGadget предусмотрена функция SetGadgetText?

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с Editor Gadget
СообщениеДобавлено: Сб сен 23, 2017 9:43 pm 
Не в сети
профессор

Зарегистрирован: Вс авг 31, 2014 12:11 am
Сообщений: 379
Благодарил (а): 47 раз.
Поблагодарили: 18 раз.
Пункты репутации: 10
[Удалено]


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

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


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

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


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

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