purebasic.info

PureBasic forum
Текущее время: Ср июн 20, 2018 8:07 pm

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




Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Переезд с FB на PB не легок
СообщениеДобавлено: Пн окт 27, 2014 6:52 am 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт апр 16, 2013 2:00 pm
Сообщений: 45
Откуда: Волгодонск
Благодарил (а): 2 раз.
Поблагодарили: 3 раз.
Пункты репутации: 5
Начал перетаскивать свои программки на пурик, и сразу столкнулся с проблемой.
Причём, попутно обновил freebasic с 0.90.1 на 1.0.0 и оказалось там тоже перестало частично работать.

Код на FB (работает на 0.90.1)
Код:
1
2
3
4
5
6
Declare Sub swe_version Lib "swedll32" Alias "_swe_version" (ByVal As String)  
Dim ver as String
ver = Space(256)
swe_version(ver)
Print "Swiss Ephemeris version ["; Trim(ver);"]"
 



На 1.0.0 перестал (пустая строка), но заработало после изменений: вместо ByVal As String написал ByRef as ZString

Теперь purebasic - пока часть функций проверил, которые числовые - всё вроде работает, а вот со строкой - засада. Возвращает мусор.
Попробовал варианты с import|endimport, GetFunction+Prototype, CallFunction - одинаковый мусор в результирующей строке, хоть стреляйся. Библиотека подключается нормально, адрес функции получает нормально.
Как правильно нужно написать код?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Переезд с FB на PB не легок
СообщениеДобавлено: Пн окт 27, 2014 7:56 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Код:
1
2
3
4
5
6
7
OpenConsole()
ver.s = Space(256)
If OpenLibrary(1, "swedll32.dll")
   CallFunction(1, "_swe_version", @ver)
   CloseLibrary(1)
EndIf
Print("Swiss Ephemeris version [" + Trim(ver) + "]")


Так?

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Переезд с FB на PB не легок
СообщениеДобавлено: Пн окт 27, 2014 8:14 am 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт апр 16, 2013 2:00 pm
Сообщений: 45
Откуда: Волгодонск
Благодарил (а): 2 раз.
Поблагодарили: 3 раз.
Пункты репутации: 5
Нет, пустая строка.
ftp://ftp.astro.com/pub/swisseph/sweph.zip тут dll можно взять.

примитивный код процедуры на Си, результат которой хочется получить:

Код:
1
2
3
4
5
6
char *FAR PASCAL_CONV swe_version(char *s)
{
  strcpy(s, SE_VERSION);
  return s;
}
 



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Переезд с FB на PB не легок
СообщениеДобавлено: Пн окт 27, 2014 9:29 am 
Не в сети
профессор

Зарегистрирован: Чт сен 22, 2011 6:21 pm
Сообщений: 230
Благодарил (а): 31 раз.
Поблагодарили: 22 раз.
Пункты репутации: 0
посмотрел названия функций просмотрщиком, почему-то именно так "_swe_version@4"
Код:
1
2
3
4
5
6
7
8
 
ver.s = Space(256)
If OpenLibrary(1, "swedll32.dll")
  CallFunction(1, "_swe_version@4", @ver)
  CloseLibrary(1)
EndIf
Debug ver
 



ps Ver: 2.00.00


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Переезд с FB на PB не легок
СообщениеДобавлено: Пн окт 27, 2014 9:53 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6309
Благодарил (а): 19 раз.
Поблагодарили: 188 раз.
Пункты репутации: 48
Есть программа, PureDLLHelper. Там сразу парсер всех функций создается в 1 клик. Всё работает, выдает версию 2.00.00
Если Пурик v5.30 то надо формат файла в простой текст и убрать поддержку unicode, эта либа не работает с ним.


Код:
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
;==========================================================================
; Generated with PureDLLHelper, Copyright ©2012 by Thomas <ts-soft> Schulz
;==========================================================================
 
Prototype  swe_azalt(a, b, c, d, e, f, g, h, i, j)
Prototype  swe_azalt_d(a, b, c, d, e, f, g)
Prototype  swe_azalt_rev(a, b, c, d, e, f)
Prototype  swe_azalt_rev_d(a, b, c, d, e)
Prototype  swe_calc(a, b, c, d, e, f)
Prototype  swe_calc_d(a, b, c, d, e)
Prototype  swe_calc_ut(a, b, c, d, e, f)
Prototype  swe_calc_ut_d(a, b, c, d, e)
Prototype  swe_close()
Prototype  swe_close_d(a)
Prototype  swe_cotrans(a, b, c, d)
Prototype  swe_cotrans_d(a, b, c)
Prototype  swe_cotrans_sp(a, b, c, d)
Prototype  swe_cotrans_sp_d(a, b, c)
Prototype  swe_cs2degstr(a, b)
Prototype  swe_cs2degstr_d(a, b, c, d, e)
Prototype  swe_cs2lonlatstr(a, b, c, d)
Prototype  swe_cs2lonlatstr_d(a, b, c, d, e)
Prototype  swe_cs2timestr(a, b, c, d)
Prototype  swe_cs2timestr_d(a, b, c, d, e)
Prototype  swe_csnorm(a)
Prototype  swe_csnorm_d(a, b, c)
Prototype  swe_csroundsec(a)
Prototype  swe_csroundsec_d(a)
Prototype  swe_d2l(a, b)
Prototype  swe_d2l_d(a)
Prototype  swe_date_conversion(a, b, c, d, e, f, g)
Prototype  swe_date_conversion_d(a, b, c, d, e, f)
Prototype  swe_day_of_week(a, b)
Prototype  swe_day_of_week_d(a)
Prototype  swe_deg_midp(a, b, c, d)
Prototype  swe_degnorm(a, b)
Prototype  swe_degnorm_d(a)
Prototype  swe_deltat(a, b)
Prototype  swe_deltat_d(a, b)
Prototype  swe_difcs2n(a, b)
Prototype  swe_difcs2n_d(a, b, c)
Prototype  swe_difcsn(a, b)
Prototype  swe_difcsn_d(a, b, c)
Prototype  swe_difdeg2n(a, b, c, d)
Prototype  swe_difdeg2n_d(a, b, c)
Prototype  swe_difdegn(a, b, c, d)
Prototype  swe_difdegn_d(a, b, c)
Prototype  swe_difrad2n(a, b, c, d)
Prototype  swe_fixstar(a, b, c, d, e, f)
Prototype  swe_fixstar_d(a, b, c, d, e)
Prototype  swe_fixstar_mag(a, b, c)
Prototype  swe_fixstar_ut(a, b, c, d, e, f)
Prototype  swe_fixstar_ut_d(a, b, c, d, e)
Prototype  swe_gauquelin_sector(a, b, c, d, e, f, g, h, i, j, k, l, m)
Prototype  swe_get_ayanamsa(a, b)
Prototype  swe_get_ayanamsa_d(a, b)
Prototype  swe_get_ayanamsa_name(a)
Prototype  swe_get_ayanamsa_ut(a, b)
Prototype  swe_get_ayanamsa_ut_d(a, b)
Prototype  swe_get_planet_name(a, b)
Prototype  swe_get_planet_name_d(a, b, c)
Prototype  swe_get_tid_acc()
Prototype  swe_get_tid_acc_d(a)
Prototype  swe_heliacal_angle(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r)
Prototype  swe_heliacal_pheno_ut(a, b, c, d, e, f, g, h, i, j)
Prototype  swe_heliacal_ut(a, b, c, d, e, f, g, h, i, j)
Prototype  swe_house_name(a)
Prototype  swe_house_pos(a, b, c, d, e, f, g, h, i)
Prototype  swe_house_pos_d(a, b, c, d, e, f, g)
Prototype  swe_houses(a, b, c, d, e, f, g, h, i)
Prototype  swe_houses_armc(a, b, c, d, e, f, g, h, i)
Prototype  swe_houses_armc_d(a, b, c, d, e, f)
Prototype  swe_houses_d(a, b, c, d, e, f)
Prototype  swe_houses_ex(a, b, c, d, e, f, g, h, i, j)
Prototype  swe_houses_ex_d(a, b, c, d, e, f, g)
Prototype  swe_jdet_to_utc(a, b, c, d, e, f, g, h, i)
Prototype  swe_jdut1_to_utc(a, b, c, d, e, f, g, h, i)
Prototype  swe_julday(a, b, c, d, e, f)
Prototype  swe_julday_d(a, b, c, d, e, f)
Prototype  swe_lat_to_lmt(a, b, c, d, e, f)
Prototype  swe_lmt_to_lat(a, b, c, d, e, f)
Prototype  swe_lun_eclipse_how(a, b, c, d, e, f)
Prototype  swe_lun_eclipse_how_d(a, b, c, d, e)
Prototype  swe_lun_eclipse_when(a, b, c, d, e, f, g)
Prototype  swe_lun_eclipse_when_d(a, b, c, d, e, f)
Prototype  swe_lun_eclipse_when_loc(a, b, c, d, e, f, g, h)
Prototype  swe_lun_occult_when_glob(a, b, c, d, e, f, g, h, i)
Prototype  swe_lun_occult_when_loc(a, b, c, d, e, f, g, h, i, j)
Prototype  swe_lun_occult_where(a, b, c, d, e, f, g, h)
Prototype  swe_nod_aps(a, b, c, d, e, f, g, h, i, j)
Prototype  swe_nod_aps_d(a, b, c, d, e, f, g, h, i)
Prototype  swe_nod_aps_ut(a, b, c, d, e, f, g, h, i, j)
Prototype  swe_nod_aps_ut_d(a, b, c, d, e, f, g, h, i)
Prototype  swe_pheno(a, b, c, d, e, f)
Prototype  swe_pheno_d(a, b, c, d, e)
Prototype  swe_pheno_ut(a, b, c, d, e, f)
Prototype  swe_pheno_ut_d(a, b, c, d, e)
Prototype  swe_rad_midp(a, b, c, d)
Prototype  swe_radnorm(a, b)
Prototype  swe_refrac(a, b, c, d, e, f, g)
Prototype  swe_refrac_d(a, b, c, d, e)
Prototype  swe_refrac_extended(a, b, c, d, e, f, g, h, i, j, k, l)
Prototype  swe_revjul(a, b, c, d, e, f, g)
Prototype  swe_revjul_d(a, b, c, d, e, f)
Prototype  swe_rise_trans(a, b, c, d, e, f, g, h, i, j, k, l, m)
Prototype  swe_rise_trans_d(a, b, c, d, e, f, g, h, i, j)
Prototype  swe_rise_trans_true_hor(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
Prototype  swe_set_ephe_path(a)
Prototype  swe_set_ephe_path_d(a)
Prototype  swe_set_jpl_file(a)
Prototype  swe_set_jpl_file_d(a)
Prototype  swe_set_lapse_rate(a, b)
Prototype  swe_set_sid_mode(a, b, c, d, e)
Prototype  swe_set_sid_mode_d(a, b, c)
Prototype  swe_set_tid_acc(a, b)
Prototype  swe_set_tid_acc_d(a)
Prototype  swe_set_topo(a, b, c, d, e, f)
Prototype  swe_set_topo_d(a, b, c)
Prototype  swe_sidtime0(a, b, c, d, e, f)
Prototype  swe_sidtime0_d(a, b, c, d)
Prototype  swe_sidtime(a, b)
Prototype  swe_sidtime_d(a, b)
Prototype  swe_sol_eclipse_how(a, b, c, d, e, f)
Prototype  swe_sol_eclipse_how_d(a, b, c, d, e)
Prototype  swe_sol_eclipse_when_glob(a, b, c, d, e, f, g)
Prototype  swe_sol_eclipse_when_glob_d(a, b, c, d, e, f)
Prototype  swe_sol_eclipse_when_loc(a, b, c, d, e, f, g, h)
Prototype  swe_sol_eclipse_when_loc_d(a, b, c, d, e, f, g)
Prototype  swe_sol_eclipse_where(a, b, c, d, e, f)
Prototype  swe_sol_eclipse_where_d(a, b, c, d, e)
Prototype  swe_split_deg(a, b, c, d, e, f, g, h)
Prototype  swe_split_deg_d(a, b, c, d, e, f, g)
Prototype  swe_time_equ(a, b, c, d)
Prototype  swe_time_equ_d(a, b, c)
Prototype  swe_topo_arcus_visionis(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t)
Prototype  swe_utc_time_zone(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
Prototype  swe_utc_to_jd(a, b, c, d, e, f, g, h, i, j)
Prototype  swe_version(a)
Prototype  swe_vis_limit_mag(a, b, c, d, e, f, g, h, i)
 
Global swe_azalt.swe_azalt
Global swe_azalt_d.swe_azalt_d
Global swe_azalt_rev.swe_azalt_rev
Global swe_azalt_rev_d.swe_azalt_rev_d
Global swe_calc.swe_calc
Global swe_calc_d.swe_calc_d
Global swe_calc_ut.swe_calc_ut
Global swe_calc_ut_d.swe_calc_ut_d
Global swe_close.swe_close
Global swe_close_d.swe_close_d
Global swe_cotrans.swe_cotrans
Global swe_cotrans_d.swe_cotrans_d
Global swe_cotrans_sp.swe_cotrans_sp
Global swe_cotrans_sp_d.swe_cotrans_sp_d
Global swe_cs2degstr.swe_cs2degstr
Global swe_cs2degstr_d.swe_cs2degstr_d
Global swe_cs2lonlatstr.swe_cs2lonlatstr
Global swe_cs2lonlatstr_d.swe_cs2lonlatstr_d
Global swe_cs2timestr.swe_cs2timestr
Global swe_cs2timestr_d.swe_cs2timestr_d
Global swe_csnorm.swe_csnorm
Global swe_csnorm_d.swe_csnorm_d
Global swe_csroundsec.swe_csroundsec
Global swe_csroundsec_d.swe_csroundsec_d
Global swe_d2l.swe_d2l
Global swe_d2l_d.swe_d2l_d
Global swe_date_conversion.swe_date_conversion
Global swe_date_conversion_d.swe_date_conversion_d
Global swe_day_of_week.swe_day_of_week
Global swe_day_of_week_d.swe_day_of_week_d
Global swe_deg_midp.swe_deg_midp
Global swe_degnorm.swe_degnorm
Global swe_degnorm_d.swe_degnorm_d
Global swe_deltat.swe_deltat
Global swe_deltat_d.swe_deltat_d
Global swe_difcs2n.swe_difcs2n
Global swe_difcs2n_d.swe_difcs2n_d
Global swe_difcsn.swe_difcsn
Global swe_difcsn_d.swe_difcsn_d
Global swe_difdeg2n.swe_difdeg2n
Global swe_difdeg2n_d.swe_difdeg2n_d
Global swe_difdegn.swe_difdegn
Global swe_difdegn_d.swe_difdegn_d
Global swe_difrad2n.swe_difrad2n
Global swe_fixstar.swe_fixstar
Global swe_fixstar_d.swe_fixstar_d
Global swe_fixstar_mag.swe_fixstar_mag
Global swe_fixstar_ut.swe_fixstar_ut
Global swe_fixstar_ut_d.swe_fixstar_ut_d
Global swe_gauquelin_sector.swe_gauquelin_sector
Global swe_get_ayanamsa.swe_get_ayanamsa
Global swe_get_ayanamsa_d.swe_get_ayanamsa_d
Global swe_get_ayanamsa_name.swe_get_ayanamsa_name
Global swe_get_ayanamsa_ut.swe_get_ayanamsa_ut
Global swe_get_ayanamsa_ut_d.swe_get_ayanamsa_ut_d
Global swe_get_planet_name.swe_get_planet_name
Global swe_get_planet_name_d.swe_get_planet_name_d
Global swe_get_tid_acc.swe_get_tid_acc
Global swe_get_tid_acc_d.swe_get_tid_acc_d
Global swe_heliacal_angle.swe_heliacal_angle
Global swe_heliacal_pheno_ut.swe_heliacal_pheno_ut
Global swe_heliacal_ut.swe_heliacal_ut
Global swe_house_name.swe_house_name
Global swe_house_pos.swe_house_pos
Global swe_house_pos_d.swe_house_pos_d
Global swe_houses.swe_houses
Global swe_houses_armc.swe_houses_armc
Global swe_houses_armc_d.swe_houses_armc_d
Global swe_houses_d.swe_houses_d
Global swe_houses_ex.swe_houses_ex
Global swe_houses_ex_d.swe_houses_ex_d
Global swe_jdet_to_utc.swe_jdet_to_utc
Global swe_jdut1_to_utc.swe_jdut1_to_utc
Global swe_julday.swe_julday
Global swe_julday_d.swe_julday_d
Global swe_lat_to_lmt.swe_lat_to_lmt
Global swe_lmt_to_lat.swe_lmt_to_lat
Global swe_lun_eclipse_how.swe_lun_eclipse_how
Global swe_lun_eclipse_how_d.swe_lun_eclipse_how_d
Global swe_lun_eclipse_when.swe_lun_eclipse_when
Global swe_lun_eclipse_when_d.swe_lun_eclipse_when_d
Global swe_lun_eclipse_when_loc.swe_lun_eclipse_when_loc
Global swe_lun_occult_when_glob.swe_lun_occult_when_glob
Global swe_lun_occult_when_loc.swe_lun_occult_when_loc
Global swe_lun_occult_where.swe_lun_occult_where
Global swe_nod_aps.swe_nod_aps
Global swe_nod_aps_d.swe_nod_aps_d
Global swe_nod_aps_ut.swe_nod_aps_ut
Global swe_nod_aps_ut_d.swe_nod_aps_ut_d
Global swe_pheno.swe_pheno
Global swe_pheno_d.swe_pheno_d
Global swe_pheno_ut.swe_pheno_ut
Global swe_pheno_ut_d.swe_pheno_ut_d
Global swe_rad_midp.swe_rad_midp
Global swe_radnorm.swe_radnorm
Global swe_refrac.swe_refrac
Global swe_refrac_d.swe_refrac_d
Global swe_refrac_extended.swe_refrac_extended
Global swe_revjul.swe_revjul
Global swe_revjul_d.swe_revjul_d
Global swe_rise_trans.swe_rise_trans
Global swe_rise_trans_d.swe_rise_trans_d
Global swe_rise_trans_true_hor.swe_rise_trans_true_hor
Global swe_set_ephe_path.swe_set_ephe_path
Global swe_set_ephe_path_d.swe_set_ephe_path_d
Global swe_set_jpl_file.swe_set_jpl_file
Global swe_set_jpl_file_d.swe_set_jpl_file_d
Global swe_set_lapse_rate.swe_set_lapse_rate
Global swe_set_sid_mode.swe_set_sid_mode
Global swe_set_sid_mode_d.swe_set_sid_mode_d
Global swe_set_tid_acc.swe_set_tid_acc
Global swe_set_tid_acc_d.swe_set_tid_acc_d
Global swe_set_topo.swe_set_topo
Global swe_set_topo_d.swe_set_topo_d
Global swe_sidtime0.swe_sidtime0
Global swe_sidtime0_d.swe_sidtime0_d
Global swe_sidtime.swe_sidtime
Global swe_sidtime_d.swe_sidtime_d
Global swe_sol_eclipse_how.swe_sol_eclipse_how
Global swe_sol_eclipse_how_d.swe_sol_eclipse_how_d
Global swe_sol_eclipse_when_glob.swe_sol_eclipse_when_glob
Global swe_sol_eclipse_when_glob_d.swe_sol_eclipse_when_glob_d
Global swe_sol_eclipse_when_loc.swe_sol_eclipse_when_loc
Global swe_sol_eclipse_when_loc_d.swe_sol_eclipse_when_loc_d
Global swe_sol_eclipse_where.swe_sol_eclipse_where
Global swe_sol_eclipse_where_d.swe_sol_eclipse_where_d
Global swe_split_deg.swe_split_deg
Global swe_split_deg_d.swe_split_deg_d
Global swe_time_equ.swe_time_equ
Global swe_time_equ_d.swe_time_equ_d
Global swe_topo_arcus_visionis.swe_topo_arcus_visionis
Global swe_utc_time_zone.swe_utc_time_zone
Global swe_utc_to_jd.swe_utc_to_jd
Global swe_version.swe_version
Global swe_vis_limit_mag.swe_vis_limit_mag
 
Procedure.i swedll32_LoadDLL()
  Protected hDLL.i
 
  hDLL = OpenLibrary(#PB_Any, "swedll32.dll")
  If hDLL <> 0
    swe_azalt = GetFunction(hDLL, "_swe_azalt@40")
    swe_azalt_d = GetFunction(hDLL, "_swe_azalt_d@28")
    swe_azalt_rev = GetFunction(hDLL, "_swe_azalt_rev@24")
    swe_azalt_rev_d = GetFunction(hDLL, "_swe_azalt_rev_d@20")
    swe_calc = GetFunction(hDLL, "_swe_calc@24")
    swe_calc_d = GetFunction(hDLL, "_swe_calc_d@20")
    swe_calc_ut = GetFunction(hDLL, "_swe_calc_ut@24")
    swe_calc_ut_d = GetFunction(hDLL, "_swe_calc_ut_d@20")
    swe_close = GetFunction(hDLL, "_swe_close@0")
    swe_close_d = GetFunction(hDLL, "_swe_close_d@4")
    swe_cotrans = GetFunction(hDLL, "_swe_cotrans@16")
    swe_cotrans_d = GetFunction(hDLL, "_swe_cotrans_d@12")
    swe_cotrans_sp = GetFunction(hDLL, "_swe_cotrans_sp@16")
    swe_cotrans_sp_d = GetFunction(hDLL, "_swe_cotrans_sp_d@12")
    swe_cs2degstr = GetFunction(hDLL, "_swe_cs2degstr@8")
    swe_cs2degstr_d = GetFunction(hDLL, "_swe_cs2degstr_d@8")
    swe_cs2lonlatstr = GetFunction(hDLL, "_swe_cs2lonlatstr@16")
    swe_cs2lonlatstr_d = GetFunction(hDLL, "_swe_cs2lonlatstr_d@16")
    swe_cs2timestr = GetFunction(hDLL, "_swe_cs2timestr@16")
    swe_cs2timestr_d = GetFunction(hDLL, "_swe_cs2timestr_d@16")
    swe_csnorm = GetFunction(hDLL, "_swe_csnorm@4")
    swe_csnorm_d = GetFunction(hDLL, "_swe_csnorm_d@4")
    swe_csroundsec = GetFunction(hDLL, "_swe_csroundsec@4")
    swe_csroundsec_d = GetFunction(hDLL, "_swe_csroundsec_d@4")
    swe_d2l = GetFunction(hDLL, "_swe_d2l@8")
    swe_d2l_d = GetFunction(hDLL, "_swe_d2l_d@4")
    swe_date_conversion = GetFunction(hDLL, "_swe_date_conversion@28")
    swe_date_conversion_d = GetFunction(hDLL, "_swe_date_conversion_d@24")
    swe_day_of_week = GetFunction(hDLL, "_swe_day_of_week@8")
    swe_day_of_week_d = GetFunction(hDLL, "_swe_day_of_week_d@4")
    swe_deg_midp = GetFunction(hDLL, "_swe_deg_midp@16")
    swe_degnorm = GetFunction(hDLL, "_swe_degnorm@8")
    swe_degnorm_d = GetFunction(hDLL, "_swe_degnorm_d@4")
    swe_deltat = GetFunction(hDLL, "_swe_deltat@8")
    swe_deltat_d = GetFunction(hDLL, "_swe_deltat_d@8")
    swe_difcs2n = GetFunction(hDLL, "_swe_difcs2n@8")
    swe_difcs2n_d = GetFunction(hDLL, "_swe_difcs2n_d@8")
    swe_difcsn = GetFunction(hDLL, "_swe_difcsn@8")
    swe_difcsn_d = GetFunction(hDLL, "_swe_difcsn_d@8")
    swe_difdeg2n = GetFunction(hDLL, "_swe_difdeg2n@16")
    swe_difdeg2n_d = GetFunction(hDLL, "_swe_difdeg2n_d@12")
    swe_difdegn = GetFunction(hDLL, "_swe_difdegn@16")
    swe_difdegn_d = GetFunction(hDLL, "_swe_difdegn_d@12")
    swe_difrad2n = GetFunction(hDLL, "_swe_difrad2n@16")
    swe_fixstar = GetFunction(hDLL, "_swe_fixstar@24")
    swe_fixstar_d = GetFunction(hDLL, "_swe_fixstar_d@20")
    swe_fixstar_mag = GetFunction(hDLL, "_swe_fixstar_mag@12")
    swe_fixstar_ut = GetFunction(hDLL, "_swe_fixstar_ut@24")
    swe_fixstar_ut_d = GetFunction(hDLL, "_swe_fixstar_ut_d@20")
    swe_gauquelin_sector = GetFunction(hDLL, "_swe_gauquelin_sector@52")
    swe_get_ayanamsa = GetFunction(hDLL, "_swe_get_ayanamsa@8")
    swe_get_ayanamsa_d = GetFunction(hDLL, "_swe_get_ayanamsa_d@8")
    swe_get_ayanamsa_name = GetFunction(hDLL, "_swe_get_ayanamsa_name@4")
    swe_get_ayanamsa_ut = GetFunction(hDLL, "_swe_get_ayanamsa_ut@8")
    swe_get_ayanamsa_ut_d = GetFunction(hDLL, "_swe_get_ayanamsa_ut_d@8")
    swe_get_planet_name = GetFunction(hDLL, "_swe_get_planet_name@8")
    swe_get_planet_name_d = GetFunction(hDLL, "_swe_get_planet_name_d@8")
    swe_get_tid_acc = GetFunction(hDLL, "_swe_get_tid_acc@0")
    swe_get_tid_acc_d = GetFunction(hDLL, "_swe_get_tid_acc_d@4")
    swe_heliacal_angle = GetFunction(hDLL, "_swe_heliacal_angle@72")
    swe_heliacal_pheno_ut = GetFunction(hDLL, "_swe_heliacal_pheno_ut@40")
    swe_heliacal_ut = GetFunction(hDLL, "_swe_heliacal_ut@40")
    swe_house_name = GetFunction(hDLL, "_swe_house_name@4")
    swe_house_pos = GetFunction(hDLL, "_swe_house_pos@36")
    swe_house_pos_d = GetFunction(hDLL, "_swe_house_pos_d@28")
    swe_houses = GetFunction(hDLL, "_swe_houses@36")
    swe_houses_armc = GetFunction(hDLL, "_swe_houses_armc@36")
    swe_houses_armc_d = GetFunction(hDLL, "_swe_houses_armc_d@24")
    swe_houses_d = GetFunction(hDLL, "_swe_houses_d@24")
    swe_houses_ex = GetFunction(hDLL, "_swe_houses_ex@40")
    swe_houses_ex_d = GetFunction(hDLL, "_swe_houses_ex_d@28")
    swe_jdet_to_utc = GetFunction(hDLL, "_swe_jdet_to_utc@36")
    swe_jdut1_to_utc = GetFunction(hDLL, "_swe_jdut1_to_utc@36")
    swe_julday = GetFunction(hDLL, "_swe_julday@24")
    swe_julday_d = GetFunction(hDLL, "_swe_julday_d@24")
    swe_lat_to_lmt = GetFunction(hDLL, "_swe_lat_to_lmt@24")
    swe_lmt_to_lat = GetFunction(hDLL, "_swe_lmt_to_lat@24")
    swe_lun_eclipse_how = GetFunction(hDLL, "_swe_lun_eclipse_how@24")
    swe_lun_eclipse_how_d = GetFunction(hDLL, "_swe_lun_eclipse_how_d@20")
    swe_lun_eclipse_when = GetFunction(hDLL, "_swe_lun_eclipse_when@28")
    swe_lun_eclipse_when_d = GetFunction(hDLL, "_swe_lun_eclipse_when_d@24")
    swe_lun_eclipse_when_loc = GetFunction(hDLL, "_swe_lun_eclipse_when_loc@32")
    swe_lun_occult_when_glob = GetFunction(hDLL, "_swe_lun_occult_when_glob@36")
    swe_lun_occult_when_loc = GetFunction(hDLL, "_swe_lun_occult_when_loc@40")
    swe_lun_occult_where = GetFunction(hDLL, "_swe_lun_occult_where@32")
    swe_nod_aps = GetFunction(hDLL, "_swe_nod_aps@40")
    swe_nod_aps_d = GetFunction(hDLL, "_swe_nod_aps_d@36")
    swe_nod_aps_ut = GetFunction(hDLL, "_swe_nod_aps_ut@40")
    swe_nod_aps_ut_d = GetFunction(hDLL, "_swe_nod_aps_ut_d@36")
    swe_pheno = GetFunction(hDLL, "_swe_pheno@24")
    swe_pheno_d = GetFunction(hDLL, "_swe_pheno_d@20")
    swe_pheno_ut = GetFunction(hDLL, "_swe_pheno_ut@24")
    swe_pheno_ut_d = GetFunction(hDLL, "_swe_pheno_ut_d@20")
    swe_rad_midp = GetFunction(hDLL, "_swe_rad_midp@16")
    swe_radnorm = GetFunction(hDLL, "_swe_radnorm@8")
    swe_refrac = GetFunction(hDLL, "_swe_refrac@28")
    swe_refrac_d = GetFunction(hDLL, "_swe_refrac_d@20")
    swe_refrac_extended = GetFunction(hDLL, "_swe_refrac_extended@48")
    swe_revjul = GetFunction(hDLL, "_swe_revjul@28")
    swe_revjul_d = GetFunction(hDLL, "_swe_revjul_d@24")
    swe_rise_trans = GetFunction(hDLL, "_swe_rise_trans@52")
    swe_rise_trans_d = GetFunction(hDLL, "_swe_rise_trans_d@40")
    swe_rise_trans_true_hor = GetFunction(hDLL, "_swe_rise_trans_true_hor@60")
    swe_set_ephe_path = GetFunction(hDLL, "_swe_set_ephe_path@4")
    swe_set_ephe_path_d = GetFunction(hDLL, "_swe_set_ephe_path_d@4")
    swe_set_jpl_file = GetFunction(hDLL, "_swe_set_jpl_file@4")
    swe_set_jpl_file_d = GetFunction(hDLL, "_swe_set_jpl_file_d@4")
    swe_set_lapse_rate = GetFunction(hDLL, "_swe_set_lapse_rate@8")
    swe_set_sid_mode = GetFunction(hDLL, "_swe_set_sid_mode@20")
    swe_set_sid_mode_d = GetFunction(hDLL, "_swe_set_sid_mode_d@12")
    swe_set_tid_acc = GetFunction(hDLL, "_swe_set_tid_acc@8")
    swe_set_tid_acc_d = GetFunction(hDLL, "_swe_set_tid_acc_d@4")
    swe_set_topo = GetFunction(hDLL, "_swe_set_topo@24")
    swe_set_topo_d = GetFunction(hDLL, "_swe_set_topo_d@12")
    swe_sidtime0 = GetFunction(hDLL, "_swe_sidtime0@24")
    swe_sidtime0_d = GetFunction(hDLL, "_swe_sidtime0_d@16")
    swe_sidtime = GetFunction(hDLL, "_swe_sidtime@8")
    swe_sidtime_d = GetFunction(hDLL, "_swe_sidtime_d@8")
    swe_sol_eclipse_how = GetFunction(hDLL, "_swe_sol_eclipse_how@24")
    swe_sol_eclipse_how_d = GetFunction(hDLL, "_swe_sol_eclipse_how_d@20")
    swe_sol_eclipse_when_glob = GetFunction(hDLL, "_swe_sol_eclipse_when_glob@28")
    swe_sol_eclipse_when_glob_d = GetFunction(hDLL, "_swe_sol_eclipse_when_glob_d@24")
    swe_sol_eclipse_when_loc = GetFunction(hDLL, "_swe_sol_eclipse_when_loc@32")
    swe_sol_eclipse_when_loc_d = GetFunction(hDLL, "_swe_sol_eclipse_when_loc_d@28")
    swe_sol_eclipse_where = GetFunction(hDLL, "_swe_sol_eclipse_where@24")
    swe_sol_eclipse_where_d = GetFunction(hDLL, "_swe_sol_eclipse_where_d@20")
    swe_split_deg = GetFunction(hDLL, "_swe_split_deg@32")
    swe_split_deg_d = GetFunction(hDLL, "_swe_split_deg_d@28")
    swe_time_equ = GetFunction(hDLL, "_swe_time_equ@16")
    swe_time_equ_d = GetFunction(hDLL, "_swe_time_equ_d@12")
    swe_topo_arcus_visionis = GetFunction(hDLL, "_swe_topo_arcus_visionis@80")
    swe_utc_time_zone = GetFunction(hDLL, "_swe_utc_time_zone@60")
    swe_utc_to_jd = GetFunction(hDLL, "_swe_utc_to_jd@40")
    swe_version = GetFunction(hDLL, "_swe_version@4")
    swe_vis_limit_mag = GetFunction(hDLL, "_swe_vis_limit_mag@36")
 
    ProcedureReturn hDLL
  EndIf
 
  ProcedureReturn #False
EndProcedure
 
If swedll32_LoadDLL()
  ver.s = Space(256)
  swe_version(@ver)
  MessageRequester ("",ver)
 
EndIf
 
 


_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Переезд с FB на PB не легок
СообщениеДобавлено: Пн окт 27, 2014 10:06 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11181
Благодарил (а): 4 раз.
Поблагодарили: 414 раз.
doremi писал(а):
всё вроде работает, а вот со строкой - засада. Возвращает мусор.
Скорее всего выбран юникодный проект, а DLL возвращает строку в формате ASCII. Так должно работать.
Код:
1
2
3
4
5
6
7
8
9
10
Import "swedll32.lib"
  swe_version(ver)
EndImport
 
Dim ver.a(256)
swe_version(@ver())
 
ver.s= PeekS(@ver(), -1, #PB_Ascii)
 
MessageRequester("", ver)


Будет работать и с ASCII, но в настройках компилятора нужно убрать галку "Создать Unocode приложение". И кодировку текста (меню "Файл", пункт "Формат файла") в таком случае лучше выбрать "Простой текст".
Код:
1
2
3
4
5
6
7
8
Import "swedll32.lib"
  swe_version(ver)
EndImport
 
ver.s= Space(256)
swe_version(@ver)
 
MessageRequester("", ver)


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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Переезд с FB на PB не легок
СообщениеДобавлено: Пн окт 27, 2014 11:30 am 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт апр 16, 2013 2:00 pm
Сообщений: 45
Откуда: Волгодонск
Благодарил (а): 2 раз.
Поблагодарили: 3 раз.
Пункты репутации: 5
Да, проблема была именно в юникоде.
Но мне нужен в 99% юникод, поэтому придется пользоваться вариантом PeekS(@ver(), -1, #PB_Ascii)
Спасибо )
Тему не закрывайте, пока всё не проверю :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Переезд с FB на PB не легок
СообщениеДобавлено: Пт окт 21, 2016 1:03 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт апр 16, 2013 2:00 pm
Сообщений: 45
Откуда: Волгодонск
Благодарил (а): 2 раз.
Поблагодарили: 3 раз.
Пункты репутации: 5
Я тут всё дрючу свою астрологию... и нужно мне сделать поле ввода для географических координат, нечто вроде IPAddressGadget где вместо точек были бы символы градуса, минут, секунд, нередактируемые.
типа xxx°xx'xx"
чтобы пользователь вводил цифры подряд не переключаясь между несколькими полями (как можно было бы сделать на трёх EditorGadget)
с некоторой тоской вспоминаю xBase с их удобными @ SAY ... GET... PICTURE

В пурике можно как-то получить желаемое?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Переезд с FB на PB не легок
СообщениеДобавлено: Пт окт 21, 2016 1:27 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт апр 16, 2013 2:00 pm
Сообщений: 45
Откуда: Волгодонск
Благодарил (а): 2 раз.
Поблагодарили: 3 раз.
Пункты репутации: 5
Нашел костылик http://forum.purebasic.com/english/view ... 3&#p395833
Аццкий адЪ :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Переезд с FB на PB не легок
СообщениеДобавлено: Сб окт 22, 2016 12:55 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 570
Благодарил (а): 2 раз.
Поблагодарили: 32 раз.
Пункты репутации: 9
doremi писал(а):
Я тут всё дрючу свою астрологию... и нужно мне сделать поле ввода для географических координат, нечто вроде IPAddressGadget где вместо точек были бы символы градуса, минут, секунд, нередактируемые.
типа xxx°xx'xx"
чтобы пользователь вводил цифры подряд не переключаясь между несколькими полями (как можно было бы сделать на трёх EditorGadget)
с некоторой тоской вспоминаю xBase с их удобными @ SAY ... GET... PICTURE

В пурике можно как-то получить желаемое?

Ну так сделай на одном EditorGadget дата не одним числом же,а есть символы препинания для разбора?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Переезд с FB на PB не легок
СообщениеДобавлено: Ср окт 26, 2016 12:45 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт апр 16, 2013 2:00 pm
Сообщений: 45
Откуда: Волгодонск
Благодарил (а): 2 раз.
Поблагодарили: 3 раз.
Пункты репутации: 5
Сергейчик писал(а):
Ну так сделай на одном EditorGadget дата не одним числом же,а есть символы препинания для разбора?


Не понял что я должен сделать.

У меня новые проблемы:

1) не могу закрыть дочернее окно по Esc, как-то все гаджеты и события вообще не связаны с клавиатурой, хорошо что хоть Tab работает на переходах между гаджетами и Space позволяет ставить/снимать крыжики на ListIcon, и нажимать кнопки.

2) не могу вызвать свою обработку при нажатии Enter на строке ListIcon, #PB_EventType_LeftDoubleClick работает (мышью), а #PB_EventType_ReturnKey - никакой реакции.

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

До начала более-менее серьезной разработки казалось что не буду спотыкаться на таких элементарных вещах... :(


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Переезд с FB на PB не легок
СообщениеДобавлено: Чт окт 27, 2016 11:00 am 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт апр 16, 2013 2:00 pm
Сообщений: 45
Откуда: Волгодонск
Благодарил (а): 2 раз.
Поблагодарили: 3 раз.
Пункты репутации: 5
Цитата:
3) при переходе между гаджетами не выделяется содержимое, для StringGadget хотелось бы, чтобы строка была выделена, то есть пользователь вводя информацию тут же стирал то, что было, а не дополнял строку слева, а для ListIconGadget нужно чтобы выделялась первая (а лучше та, которая была выделенной, когда ListIcon потерял фокус) строка списка, совершенно непонятно, как это сделать.


Решено через SetGadgetState(ListIcon_0,0) - таки выделенная строка при последующем обходе сохраняется потом. А выделение содержимого через SendMessage_(GadgetID(каждый_гаджет),#EM_SETSEL,0,-1)

Для получения MaskEdit нашел более лучшее решение - xMask (приаттачиваю)
SetGadgetMask(DateG,"90.00.0000","0123456789",'0', #False, #True)
SetGadgetMask(TimeG,"90:00:00","0123456789",'0', #False, #True)
....
RemoveGadgetMasks(DateG)
RemoveGadgetMasks(TimeG)

Вопросы как закрыть окно Escape'ом и выбрать строку ListIcon Enter'ом открыты.


Вложения:
setgadgetmask.pbi [31.56 KiB]
Скачиваний: 86
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Переезд с FB на PB не легок
СообщениеДобавлено: Чт окт 27, 2016 11:39 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6309
Благодарил (а): 19 раз.
Поблагодарили: 188 раз.
Пункты репутации: 48
doremi писал(а):

Вопросы как закрыть окно Escape'ом

В цикле Window(0)
Код:
1
2
3
4
5
6
If GetAsyncKeyState_(27)= -32767
      ; Флаг выхода из программы, или End  
      ; или Break
      ; или закрыть окно CloseWindow(0)
      End; закроем всю программу
EndIf


_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Переезд с FB на PB не легок
СообщениеДобавлено: Пт окт 28, 2016 10:36 am 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт апр 16, 2013 2:00 pm
Сообщений: 45
Откуда: Волгодонск
Благодарил (а): 2 раз.
Поблагодарили: 3 раз.
Пункты репутации: 5
kvitaliy писал(а):
В цикле Window(0)


Не, мне надо закрывать дочерние окна только.
Пока решил через

AddKeyboardShortcut(Window_0, #PB_Shortcut_Return, 13)
AddKeyboardShortcut(Window_0, #PB_Shortcut_Insert, 33)
AddKeyboardShortcut(Window_0, #PB_Shortcut_Delete, 34)

и отдельной веткой условий в обработке событий

If Event = #PB_Event_Menu And EventMenu()=13 ; нажали Enter
AG = GetActiveGadget()
Select AG
Case...

для дочернего окна получилось

AddKeyboardShortcut(Window_1, #PB_Shortcut_Escape, 27)
AddKeyboardShortcut(Window_1, #PB_Shortcut_Return, 113)

...
Event = WaitWindowEvent()
If Event = #PB_Event_Menu And EventMenu()=27 ; нажали Esc
Quit=1
EndIf

Вроде устраивает, только приходится эти события обрабатывать повторно после мыши. Хотя по логике это одно и тоже, что мышкой нажали на кнопку, что нажали Enter когда кнопка была в фокусе.

Кстати, оказалось, что номера событиям по одинаковым шорткатам в разных окнах нужны ГЛОБАЛЬНО разные, иначе срабатывают не в тех окнах, хотя эти окна могут быть DisableWindow()


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Переезд с FB на PB не легок
СообщениеДобавлено: Пт окт 28, 2016 1:48 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6309
Благодарил (а): 19 раз.
Поблагодарили: 188 раз.
Пункты репутации: 48
doremi писал(а):
Не, мне надо закрывать дочерние окна только.

Не вижу принципиальной разницы, если правильно организован главный цикл программы и обработка событий конкретного окна..

_________________
read-only


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

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


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

Сейчас этот форум просматривают: fil@tov и гости: 6


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

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