purebasic.info

PureBasic forum
Текущее время: Сб май 30, 2020 8:56 pm

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




Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Ср янв 30, 2019 10:24 am 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 611
Благодарил (а): 42 раз.
Поблагодарили: 79 раз.
Пункты репутации: 2
Попробовал перевести свою AutoIt3 функцию в PureBasic процедуру. Возможно некоторые вещи можно было бы сделать по-другому. Во первых я не понял как избавиться от глобального массива и передать его ссылкой на указатель. Во вторых как я понял систему проверки ошибок я должен сделать сам, грубо говоря создав переменную Error_Procedure. Пришлось все значения выводить в консоль (Debug), чтобы найти ошибку в расчётах.
Здесь num$ это число, sSymbol$ это база, то есть набор цифр, например для десятеричной это 0123456789, а для двоичной 01 для шестнадцатеричной 0123456789abcdef и т.д.


Код:
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
Error_Procedure = 0
Global Dim Arr.s(1)
 
; число в массив
Procedure StrToArrLetter(Array Arr.s(1), String$)
        LenStr = Len(String$) ; если набор символов менее 2-х, то не имеет смысла
        If LenStr = 0
                Error_Procedure = 1
        Else
                ReDim Arr(LenStr+1)
                For n = 1 To LenStr+1
                        Arr(n) = Mid(String$, n, 1)
                Next
        EndIf
        ProcedureReturn
EndProcedure
 
Procedure NumToDec(num$, Symbol$, casesense = 0)
        Protected i, Pos, LenStr, ArrSz, Out
        Protected Dim Arr.s(1)
        LenStr = Len(Symbol$) ; если набор символов менее 2-х, то не имеет смысла
        If LenStr < 2
                Error_Procedure = 1
                ProcedureReturn 0
        EndIf
       
        StrToArrLetter(Arr(), num$) ; число в массив
        If Error_Procedure
                Error_Procedure = 1
                ProcedureReturn 0
        EndIf
        ArrSz = ArraySize(Arr()) - 1
        For i = 1 To ArrSz
                Pos = FindString(Symbol$, Arr(i), 1, casesense)
                If Not Pos
                        Error_Procedure = 2
                        ProcedureReturn 0
                EndIf
                Out + (Pos - 1) * Pow(LenStr, ArrSz - i)
        Next
        ProcedureReturn Out
EndProcedure
 
; Debug "NumToDec = " + NumToDec("101", "01")
Debug "NumToDec = " + NumToDec("ff", "0123456789abcdef")
Debug "Error = " + Error_Procedure
 



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср янв 30, 2019 10:34 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6609
Благодарил (а): 34 раз.
Поблагодарили: 229 раз.
Пункты репутации: 61
А встроенные функции что не нравятся?
Цитата:
Example

Debug Val("1024102410241024") ; will print '1024102410241024'.
Debug Val("$10FFFFFFFF") ; will print '73014444031'.
Debug Val("%1000") ; will print '8'.

Типа того:
Код:
1
2
3
4
5
 
num$ = "ff"
Debug Val("$" + num$)
 
 


_________________
read-only ¯\_(ツ)_/¯


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср янв 30, 2019 10:39 am 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 611
Благодарил (а): 42 раз.
Поблагодарили: 79 раз.
Пункты репутации: 2
kvitaliy писал(а):
А встроенные функции что не нравятся?
У меня нет ограничений на базу.
Если я ещё одну функцию обратного конвертирования сделаю, то можно будет слово перевести в цифру и обратно.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср янв 30, 2019 11:13 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11648
Благодарил (а): 4 раз.
Поблагодарили: 501 раз.
AZJIO писал(а):
Во первых я не понял как избавиться от глобального массива и передать его ссылкой на указатель.
Глобальный массив не нужен. Если заменить
Код:
1
Global Dim Arr.s(1)

на
Код:
1
Dim Arr.s(1)

это не меняет логику работы, при том что массив не глобальный. Массив в процедуру передается по ссылке.

AZJIO писал(а):
создав переменную Error_Procedure
Только она в данном случае должна быть глобальной.
Можно сделать по другому.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Procedure Test(Param, *ErrCode.Integer=0)
  Protected Err=0
 
  If Param = 0
    Err =  1
  EndIf
 
  If *ErrCode
    *ErrCode\i = Err
  EndIf
EndProcedure
 
x.i=0
Test(2, @x)
Debug x
x=0
Test(0, @x)
Debug x
Test(0) ; Если код ошибки не нужен, не передаем необязательный параметр.



AZJIO писал(а):
Пришлось все значения выводить в консоль (Debug), чтобы найти ошибку в расчётах.
Чем отладчик не подошел?
Изображение


Вложения:
Debugger.png [52.02 KiB]
Скачиваний: 0

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср янв 30, 2019 11:24 am 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 611
Благодарил (а): 42 раз.
Поблагодарили: 79 раз.
Пункты репутации: 2
Аналогично сделал обратную функцию, но пока не срастается ищу проблему, похоже ограничение чисел. Работает с 26 элементами числа в базе. У меня в AutoIt3 используется библиотека для работы с большими числами.
Код:
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
Global Error_Procedure = 0
Declare StrToArrLetter(Array Arr.s{1}(1), String$)
Declare.s DecToNum(Dec.q, Symbol$)
Declare.q NumToDec(num$, Symbol$, casesense = 0)
 
; число в массив, быстрая
Procedure StrToArrLetter(Array Arr.s{1}(1), String$)
        Protected LenStr, i
        LenStr = Len(String$)
        If LenStr
                ReDim Arr(LenStr - 1)
                PokeS(Arr(), String$, -1, #PB_String_NoZero)
        EndIf
EndProcedure
 
Procedure.s DecToNum(Dec.q, Symbol$)
        Protected Out.s, ost, Dim Arr.s{1}(1)
        StrToArrLetter(Arr(), Symbol$)
        ArrSz = ArraySize(Arr()) + 1
        If Error_Procedure Or ArrSz < 2
                Error_Procedure = 1
                ProcedureReturn ""
        EndIf
        Repeat
                ost = Mod(Dec, ArrSz)
                Dec = (Dec - ost) / ArrSz
                Out = Arr(ost) + Out
        Until Dec < 1
        ProcedureReturn Out
EndProcedure
 
Procedure.q NumToDec(num$, Symbol$, casesense = 0)
        Protected i, Pos, LenStr, ArrSz, Out.q, Dim Arr.s{1}(1)
        LenStr = Len(Symbol$) ; если набор символов менее 2-х, то не имеет смысла
        If LenStr < 2
                Error_Procedure = 1
                ProcedureReturn 0
        EndIf
 
        StrToArrLetter(Arr(), num$) ; число в массив
        If Error_Procedure
                Error_Procedure = 1
                ProcedureReturn 0
        EndIf
        ArrSz = ArraySize(Arr())
        For i = 0 To ArrSz
                Pos = FindString(Symbol$, Arr(i), 1, casesense)
                If Not Pos
                        Error_Procedure = 2
                        ProcedureReturn 0
                EndIf
                Out + (Pos - 1) * Pow(LenStr, ArrSz - i)
        Next
        ProcedureReturn Out
EndProcedure
 
; Debug "NumToDec = " + NumToDec("101", "01")
; Debug "NumToDec = " + NumToDec("ff", "0123456789abcdef")
; абвгдежзийклмнопрстуфхцчшщъыьэюя
baza$ =  "абгдёжзйклтевирп" ; ограничение 26 символов всвязи с ограничением чисел
resDec = NumToDec("привет", baza$)
Debug "NumToDec = " + resDec
Debug "DecToNum = " + DecToNum(resDec, baza$)
; Debug "DecToNum = " + DecToNum(255, "0123456789abcdef")
; Debug "Error = " + Error_Procedure
 



Последний раз редактировалось AZJIO Пн мар 16, 2020 11:53 pm, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср янв 30, 2019 12:46 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 1010
Благодарил (а): 2 раз.
Поблагодарили: 58 раз.
Пункты репутации: 9
Хочу спросить есть допустим строковое число(разряды в виде символа некой его кодировке ascii,utf)
имеет большую длину так как в памяти на один символ байт или более информации на символ.
так вот я правильно понял что вы хотите перевести эту строку в числовое значение допустим с типом q или у вас более длинный тип по разрядам?
И вы храните эти данные в виде массива или в памяти? :roll:


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср янв 30, 2019 3:23 pm 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 611
Благодарил (а): 42 раз.
Поблагодарили: 79 раз.
Пункты репутации: 2
Сергейчик писал(а):
Хочу спросить есть допустим строковое число(разряды в виде символа некой его кодировке ascii,utf)
имеет большую длину так как в памяти на один символ байт или более информации на символ.
так вот я правильно понял что вы хотите перевести эту строку в числовое значение допустим с типом q или у вас более длинный тип по разрядам?
И вы храните эти данные в виде массива или в памяти? :roll:

Так как мне нужно производить математические функции используя обычные операторы PureBasic (умножить, разделить, возведение в степень), то я не могу хранить разряды в массивах. А так как ранее я использовал специальную библиотеку по работе с большими числами, хоть до 200 цифр длинной, которая за ширмой, под капотом выполняла поразрядные вычисления воспринимая числа как текст и беря по одной цифре, как мы делали это на уроке математики в столбик и вычисляет конечно хоть слово, хоть предложение, по крайней мере я мог хеш md5 перевести допустим в русские буквы с более короткой длинной, так как 33 буквы против 16. Допустим пароль сначала хешируется, а потом переводится в некую текстовую последовательность и получаем буквенный пароль, допустим из "purebasic.info AZJIO" я получаю пароль допустим "KNAy87VOMlp56t", то есть я могу сгенерировать пароль и получить его используя свой скрипт, а получить обратно из пароля в ключевую фразу не получится. Ну это как пример использования, прога уже написана на AutoIt3, ищи "Password generator AZJIO" или "Converting numbers AZJIO".


Новое NumberNumToName - конвертирует число в текстовую пропись, много не тестил, добился результатов вывода теперь смотрю что натворил.
Обновил 2 раза, заменил тип Num.q, убрал IntQ
NumberNumToName
Код:
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
Global Error_Procedure = 0
 
; число в массив
Procedure StrToArrLetter(Array Arr.s(1), String$)
        LenStr = Len(String$) ; если набор символов менее 2-х, то не имеет смысла
        If LenStr = 0
                Error_Procedure = 1
        Else
                ReDim Arr(LenStr+1)
                For n = 1 To LenStr+1
                        Arr(n) = Mid(String$, n, 1)
                Next
        EndIf
        ProcedureReturn
EndProcedure
 
Procedure.s NumberNumToName(Num.q, RusLng)
        Protected aN, aNum, c, i, j, n, r, sText.s, NumStr$, aNum0, aN0
        Protected Dim aNum.s(1)
        Protected Dim aN.s(1)
 
        ; Num = Trim(Num) ; удаляем пробелы (для текстового представления числа)
 
        If Num = 0
                If RusLng
                        ProcedureReturn "Ноль"
                EndIf
                ProcedureReturn "Zero"
        EndIf
 
;       If Num > 9223372036854775806 ; максимальное число... больше и не получится задать, так как тип числа не позволяет
;               Error_Procedure = 1
;               ProcedureReturn ""
;       EndIf
 
;       Num = IntQ(Num) ; берём целую часть числа... при максимальном числе возвращает изменённое число, 8 вместо 6 последняя цифра
 
        NumStr$ = Str(Num)
        LenStr = Len(NumStr$)
 
;       If LenStr > 19 ; максимальное число
;               Error_Procedure = 1
;               ProcedureReturn ""
;       EndIf
        ost = Mod(LenStr, 3)
        ; Num = StringRegExpReplace(Num, "(\A\d{1,3}(?=(\d{3})+\z)|\d{3}(?=\d))", "\1 ") ; dwerf
        ffor = (LenStr-ost)/3
 
; Debug "ffor = " + ffor
        If ost
                ; st = 1
                ; aNum(1) = Mid(NumStr$, 1, ost)
                ffor +1
                NumStr$ = RSet(NumStr$ , ffor*3, "0") ; добавляем нули в начале
                ReDim aNum(ffor+1)
        ; Else
        ; st = 0
        Else
                ReDim aNum(ffor+1)
        EndIf
; Debug "NumStr$ = " + NumStr$
        For i = 1 To ffor
                ; aNum(i+st) = Mid(NumStr$, (i-1)*3+ost +1, 3)
                aNum(i) = Mid(NumStr$, (i-1)*3+1, 3)
        Next
        aNum0 = ArraySize(aNum()) - 1
; Debug "aNum0 = " + aNum0
 
        Dim a.s(4, 10)
        Dim aBitNum.s(7)
        If RusLng
                a(0, 0) = " десять"
                a(0, 1) = " одиннадцать"
                a(0, 2) = " двенадцать"
                a(0, 3) = " тринадцать"
                a(0, 4) = " четырнадцать"
                a(0, 5) = " пятнадцать"
                a(0, 6) = " шестнадцать"
                a(0, 7) = " семнадцать"
                a(0, 8) = " восемнадцать"
                a(0, 9) = " девятнадцать"
 
                a(1, 1) = " сто"
                a(1, 2) = " двести"
                a(1, 3) = " триста"
                a(1, 4) = " четыреста"
                a(1, 5) = " пятьсот"
                a(1, 6) = " шестьсот"
                a(1, 7) = " семьсот"
                a(1, 8) = " восемьсот"
                a(1, 9) = " девятьсот"
 
                a(2, 2) = " двадцать"
                a(2, 3) = " тридцать"
                a(2, 4) = " сорок"
                a(2, 5) = " пятьдесят"
                a(2, 6) = " шестьдесят"
                a(2, 7) = " семьдесят"
                a(2, 8) = " восемьдесят"
                a(2, 9) = " девяносто"
 
                a(3, 3) = " три"
                a(3, 4) = " четыре"
                a(3, 5) = " пять"
                a(3, 6) = " шесть"
                a(3, 7) = " семь"
                a(3, 8) = " восемь"
                a(3, 9) = " девять"
 
                aBitNum(1) = " тысяч"
                aBitNum(2) = " миллион"
                aBitNum(3) = " миллиард"
                aBitNum(4) = " триллион"
                aBitNum(5) = " квадриллион"
                aBitNum(6) = " квинтиллион"
        Else
                a(0, 0) = " ten"
                a(0, 1) = " eleven"
                a(0, 2) = " twelve"
                a(0, 3) = " thirteen"
                a(0, 4) = " fourteen"
                a(0, 5) = " fifteen"
                a(0, 6) = " sixteen"
                a(0, 7) = " seventeen"
                a(0, 8) = " eighteen"
                a(0, 9) = " nineteen"
 
                a(1, 1) = "hundred"
                a(1, 2) = " two hundred"
                a(1, 3) = " three hundred"
                a(1, 4) = " four hundred"
                a(1, 5) = " five hundred"
                a(1, 6) = " six hundred"
                a(1, 7) = " seven hundred"
                a(1, 8) = " eight hundred"
                a(1, 9) = " nine hundred"
 
                a(2, 2) = " twenty"
                a(2, 3) = " thirty"
                a(2, 4) = " forty"
                a(2, 5) = " fifty"
                a(2, 6) = " sixty"
                a(2, 7) = " seventy"
                a(2, 8) = " eighty"
                a(2, 9) = " ninety"
 
                a(3, 3) = " three"
                a(3, 4) = " four"
                a(3, 5) = " five"
                a(3, 6) = " six"
                a(3, 7) = " seven"
                a(3, 8) = " eight"
                a(3, 9) = " nine"
 
                aBitNum(1) = " thousand"
                aBitNum(2) = " million"
                aBitNum(3) = " billion"
                aBitNum(4) = " trillion"
                aBitNum(5) = " quadrillion"
                aBitNum(6) = " quintillion"
        EndIf
 
        ; aNum(1) = StringFormat("%03s", aNum(1)) ; дополняем нулями недостающие разряды
 
; Debug "aNum0 = " + aNum0
        For i = 1 To aNum0
                If aNum(i) = "000"
                        Continue
                EndIf
 
                StrToArrLetter(aN(), aNum(i)) ; число в массив
                aN0 = ArraySize(aN()) - 1
                r = aNum0 - i
 
                For j = 1 To aN0
                        n = Val(aN(j))
                        If Not n
                                Continue
                        EndIf
 
                        c = j
 
                        Select j
                                Case 3
                                        Select n ; для чисел 1 или 2
                                                Case 1
                                                        If RusLng
                                                                If r = 1 ; разряд единиц (не десятков и сотен)
                                                                        sText + " одна"
                                                                Else
                                                                        sText + " один"
                                                                EndIf
                                                        Else
                                                                sText + " one"
                                                        EndIf
                                                Case 2
                                                        If RusLng
                                                                If r = 1
                                                                        sText + " две"
                                                                Else
                                                                        sText + " два"
                                                                EndIf
                                                        Else
                                                                sText + " two"
                                                        EndIf
                                        EndSelect
                                Case 2 ; для чисел от 10 до 19
                                        If n = 1
                                                c = 0
                                                n = Val(aN(3))
                                                aN(3) = "0"
                                        EndIf
                        EndSelect
 
                        sText + a(c, n) ; присоединения числа из массива
                Next
 
                sText + aBitNum(r)
 
                Select n ; окончания для раряда кратного 1000, при j=3 в конце цикла
                        Case 1
                                If r = 1 And RusLng ; одна тысяч<а>
                                        sText + "а"
                                EndIf
                        Case 2, 3, 4
                                If r = 1 ; 2,3,4 тысяч<и>
                                        If RusLng
                                                sText + "и"
                                        Else
                                                sText + "s"
                                        EndIf
                                ElseIf r > 1 ; 2,3,4 милион<а>
                                        If RusLng
                                                sText + "а"
                                        Else
                                                sText + "s"
                                        EndIf
                                EndIf
                        Default
                                If r > 1 ; 5-9 милион<ов>
                                        If RusLng
                                                sText + "ов"
                                        Else
                                                sText + "s"
                                        EndIf
                                EndIf
                EndSelect
        Next
 
        ProcedureReturn Trim(sText)
EndProcedure
 
zzz.q = 9223372036854775806
Debug "Error = " + Error_Procedure + #TAB$ + Str(zzz) + #TAB$ + " = " + #TAB$ +  NumberNumToName(zzz, 1)
zzz1.f = 9223.655687
Debug "Error = " + Error_Procedure + #TAB$ + Str(zzz1) + #TAB$ + " = " + #TAB$ +  NumberNumToName(zzz1, 1)
zzz = 1854016
Debug "Error = " + Error_Procedure + #TAB$ + Str(zzz) + #TAB$ + " = " + #TAB$ +  NumberNumToName(zzz, 1)
zzz = 854356
Debug "Error = " + Error_Procedure + #TAB$ + Str(zzz) + #TAB$ + " = " + #TAB$ +  NumberNumToName(zzz, 1)
zzz = 54356
Debug "Error = " + Error_Procedure + #TAB$ + Str(zzz) + #TAB$ + " = " + #TAB$ +  NumberNumToName(zzz, 1)
zzz = 4356
Debug "Error = " + Error_Procedure + #TAB$ + Str(zzz) + #TAB$ + " = " + #TAB$ +  NumberNumToName(zzz, 1)
zzz = 356
Debug "Error = " + Error_Procedure + #TAB$ + Str(zzz) + #TAB$ + " = " + #TAB$ +  NumberNumToName(zzz, 1)
zzz = 1
Debug "Error = " + Error_Procedure + #TAB$ + Str(zzz) + #TAB$ + " = " + #TAB$ +  NumberNumToName(zzz, 1)



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср янв 30, 2019 4:29 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 1010
Благодарил (а): 2 раз.
Поблагодарили: 58 раз.
Пункты репутации: 9
Я точно не собираюсь что то искать как будто это нужно мне а не вам.........


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср янв 30, 2019 4:37 pm 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 611
Благодарил (а): 42 раз.
Поблагодарили: 79 раз.
Пункты репутации: 2
Сергейчик писал(а):
Я точно не собираюсь что то искать как будто это нужно мне а не вам.........
тогда правильно формулируйте. Я увидел у вас вопросы, теперь вы говорите что даёте мне совет. Совет использовать длинные числа?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср янв 30, 2019 4:43 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 1010
Благодарил (а): 2 раз.
Поблагодарили: 58 раз.
Пункты репутации: 9
Где вы увидели совет что я вам рекомендовал использовать длинные числа?
Я просто хочу понять логику ваших преобразований.. :roll:
PS:Именно вы создатель темы и вам формулировать и управлять ею....
ДА и какой можно дать совет если не понял что нужно?


Последний раз редактировалось Сергейчик Ср янв 30, 2019 4:50 pm, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср янв 30, 2019 4:48 pm 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 611
Благодарил (а): 42 раз.
Поблагодарили: 79 раз.
Пункты репутации: 2
Сергейчик
я просто хотел узнать что мне надо по вашей версии, то, что не является советом.

Пётр
Цитата:
Чем отладчик не подошел?
не знал что так можно.

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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср янв 30, 2019 5:20 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 1010
Благодарил (а): 2 раз.
Поблагодарили: 58 раз.
Пункты репутации: 9
AZJIO писал(а):
Сергейчик
я просто хотел узнать что мне надо по вашей версии, то, что не является советом.

Если ориентироваться на то что вы спросили и как я недопонял и задал доп.вопросы
то что вам нужно, маловероятно могу дать совет
в отрывок кода не вникал.
А анти совет я не собирался давать(хотя и он тоже мог бы быть советом)
PS:Вы вроде бы пишите про ссылки и от избавления от массива(значит хотите работать с память без массива?) так ли это? :roll:


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср янв 30, 2019 5:27 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 1010
Благодарил (а): 2 раз.
Поблагодарили: 58 раз.
Пункты репутации: 9
AZJIO писал(а):
Сергейчик
я просто хотел узнать что мне надо по вашей версии, то, что не является советом.

Пётр
Цитата:
Чем отладчик не подошел?
не знал что так можно.

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

Нам это не нужно ,мы на ошибках учимся. :D :wink: :wink:


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср янв 30, 2019 9:48 pm 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 611
Благодарил (а): 42 раз.
Поблагодарили: 79 раз.
Пункты репутации: 2
Сергейчик писал(а):
PS:Вы вроде бы пишите про ссылки и от избавления от массива(значит хотите работать с память без массива?) так ли это? :roll:

Сергейчик писал(а):
И вы храните эти данные в виде массива или в памяти? :roll:
в виде массива в памяти. Вы считаете что код выполняется на жёстком диске?

Сергейчик писал(а):
Я точно не собираюсь что то искать

Сергейчик писал(а):
в отрывок кода не вникал
я бы так не смог... так откровенно признаться...


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт янв 31, 2019 4:17 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 1010
Благодарил (а): 2 раз.
Поблагодарили: 58 раз.
Пункты репутации: 9
Массив конечно тоже в памяти просто стратегия с ним другая ,нужен ли он? :D
К стати вы в примере шестнадцатеричные(строковые) преобразуете в десятичное число и мы тут что то подобное делали viewtopic.php?f=19&t=4801
хотя может и ограниченно по длине на некий тип переменной не помню да и вы не ответили на вопрос что вам нужно так что удачи. :wink:


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

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


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

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


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

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