purebasic.info

PureBasic forum
Текущее время: Сб дек 15, 2018 4:58 pm

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




Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Чт июн 07, 2018 6:47 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 712
Благодарил (а): 75 раз.
Поблагодарили: 21 раз.
Пункты репутации: 5
Пётр, а как длина строки вычисляется? перебором или из старшего адреса младший отнимается?
есть код подпрграммы? что она делает
идея Сергейчик прокатит если там перебор


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Чт июн 07, 2018 7:45 am 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 239
Благодарил (а): 22 раз.
Поблагодарили: 33 раз.
Пункты репутации: 0
Пётр писал(а):
Правда длина строки отрицательной быть не может и правильнее писать
Скорее всего мой вариант не является не допустимым-исключающим, тут зависит не то что правильно, или правильно ли указан диапазон с которым надо сравнивать если диапазон содержит и числа которым результат функции не принадлежит, а то, какая операция сравнения работает быстрее. Он же очевидно не приводит к ошибке, а если читать языком формулирования задачи, то я оговариваю, "если строка не пуста, то", не пуста значит если число символов не равно 0, так как ТОЛЬКО в этом случае она не пуста, так что выражение соответствует словесной формулировке.

да и кстати я вспомнил что приравнивание дескриптора к нулю hwnd<>0 я заметил часто, а функцию Len просто для примера взял, аналогично это могла быть и FindString

Пётр писал(а):
Разница минимальная и отличие в одной асм инструкции.
я тут поразмышлял логически т вывод следующий... Сравнение с 0, это фактически проверить что все цифры в "слове" равны 0, то есть 00000000. Сравнение больше-меньше это допустим два числа 0001000 и 0000100, то есть от старшего порядка проверяем у кого быстрее встретится 1, тот и старше. При сравнении с отрицательными ещё проверить бит знака. То есть я прихожу к выводу что это очень не затратная операция даже для циклов. В цикле затраты можно оценить в процентном отношении, если операция увеличивает число шагов в двое, то и весь цикл вдвое дольше будет отрабатывать. Ранее я проверял скорость работы условия, сделал цикл на миллион итераций, содержание почти пустышка, типа "если труе, то переменная равна 0" и выполнился цикл мгновенно, допустим за сотую секунды. В общем, да, такое приравнивание не мешает, хотя у меня выработалась привычка естественного восприятия, то есть глядя на краткий вариант у меня нет недопонимания или недонаглядности.

Изображение

<> 0 в код-архиве 362 раза (с пробелом и без)

kvitaliy писал(а):
Да и вообще, как я понял, исходный код из программы на AutoIt можно достать, вроде это не так сложно, как из настоящего exe-шника?

EXE-файл является не каким то абстрактным понятием, а вполне кому-то известной структурой. Если программа выполняет что-то, то её команды имеют какую-то последовательных логических конструкций, просто в отличии от исходника она более компактная. В теории можно предположить, что те кто разрешал EXE-файлу исполнятся, могут получить скелет логики, логическую конструкцию, осталось этой конструкции дать имена функций и переменным и получить как бы приближённый исходный код. Так что это всё фейк, о том что одно декомпилируемое, а другое нет. Это надежды что моё то точно ни кто не изучит. В AutoIt тоже есть обфускация, когда именам переменным и функциям даются односимвольные имена, если переменных больше 36 то добавляются двухсимвольные, если больше чем 36*36 то добавляются трёхсимвольные, обычно более 3-х символьных не бывает. Учитывая, что открытые инклуды перемешиваются с исходником, то изучать логику практически не возможно, легче написать прогу посмотрев на её фейс. То есть к тому моменту, когда будешь готов разобраться с исходником (выпотрошенным обфуцированным), в этом уровне развитии ты скажешь, что напишешь эту прогу в разы лучше. Или когда поймёшь исходник, который вскрывал, будешь плеваться говоря и как автор так мог извращаться, когда можно было в разы проще, и скажешь не буду этот говнокод ковырять дальше, автор идиот. Писать код легче чем изучать чужие тараканы. Обфускация также удаляет комментарии, так что не легче разбираться чем с компилируемым.
У меня исходники открыты не потому что я знаю что их взломают и даю открыто. Я знаю, что я на стадии несовершенства и код не является выдающимся, а кому то поможет в изучении, чтобы в России молодежь интересовалась программированием не выклянчивая у снобов. Тот кто открыт может двигаться дальше и быстро учится на основе взаимопомощи. Тот кто закрыт, зарывает свой талант и остаётся в риске не сдвигаться дальше, потому что он не получит кушак критики на голову от пользователей, не услышит советов профессионалов.

Дегтярёв писал(а):
Однако, он пришёл сюда
офтоп
Ты понял что ты ничего не умеешь и тебе остаётся только прикрываться авторитетом PureBasic. Ну давай я тогда фотошоп возьму как аллегорию и буду говорить что ты никогда не достигнешь такого качества программы. Может PureBasic и крут, но ты то какое имеешь к этому отношение? То что ты не будешь использовать AutoIt3 и его программы, кому это интересно? С тем же успехом твои слова мог сказать школьник, который впервые слышит, что такое PureBasic и AutoIt3.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Чт июн 07, 2018 9:02 am 
Не в сети
док
Аватар пользователя

Зарегистрирован: Ср июн 18, 2014 6:34 pm
Сообщений: 111
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
AZJIO писал(а):
У меня исходники открыты не потому что я знаю что их взломают и даю открыто.
На что у вас исходники открыты? На какие программы? Исходники ваши "не секрет", а какие именно программы это секрет?
Разве их писала группа профессионалов и они представляют какую-то коммерческую ценность?
Что вы могли написать, в принципе?
Редакторы видео и звука, драйверы, распознавание лиц или датчики движения?
Если у вас "открыты исходники", можете вы озвучить, что они делают, ваши программы много десятков штук?
Если вы считаете своим долгом обогатить своими знаниями других людей, то, хотя бы, сообщить о сути своих программ вы могли бы?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Чт июн 07, 2018 9:20 am 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 239
Благодарил (а): 22 раз.
Поблагодарили: 33 раз.
Пункты репутации: 0
Пётр писал(а):
Разница минимальная и отличие в одной асм инструкции.
это работа какого-то конвертора в асм или ...? Мне просто интересно разложить и другой код (не сейчас но в будущем).

Дегтярёв писал(а):
[сообщить о сути своих программ вы могли бы?
офтоп
это сильный офтоп, непозитивный. Я не хочу оправдываться, что явно прослеживается в ваших словах. Я не уверен что вам это интересно, кроме как поплевать, и в конце сказать что проги говно. Это выглядит недовольством, спором от которого я ничего не получаю. Я не хочу доказывать что либо, потому что я уже знаю что я пишу плохо-хорошо и ваши слова и оценки мне погоды не сделают. Так что я нахожу разговор бесполезным и личным, его бы через личку, но вам наверно так не интересно, нет публики.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Чт июн 07, 2018 10:58 am 
Не в сети
док

Зарегистрирован: Чт ноя 22, 2007 8:03 pm
Сообщений: 171
Откуда: Питер
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Сергейчик писал(а):
По идеи зачем нужно вычислять длину текста,когда достаточно посмотреть на первый символ.что бы понять есть он или нет :roll:

Всё зависит от способа хранения строк. Если строка храниться со счётчиком символов, можно сразу брать этот счётчик.

AZJIO писал(а):
я тут поразмышлял логически т вывод следующий... Сравнение с 0, это фактически проверить что все цифры в "слове" равны 0, то есть 00000000. Сравнение больше-меньше это допустим два числа 0001000 и 0000100, то есть от старшего порядка проверяем у кого быстрее встретится 1, тот и старше. При сравнении с отрицательными ещё проверить бит знака.

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

AZJIO писал(а):
Так что это всё фейк, о том что одно декомпилируемое, а другое нет.

AutoIt не нужно декомпилировать. Структурно, скомпилированный файл представляет собой некий рантайм (раньше он размещался в отдельных файлах bin) к которому "пристёгнут" исходный текст в зашифрованом виде.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Чт июн 07, 2018 11:20 am 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 342
Благодарил (а): 1 раз.
Поблагодарили: 13 раз.
Пункты репутации: 0
Цитата:
If Len(Text$)<>0 ; зачем приравнивание?

Не приравнивание, а сравнение. Если человек не в курсе особенностей этого бейсика(в других такого невстречал) то когда преде ним стоит такой текст If Len(Text$), ему трудно понять чего оно делает. А код должен писатьтся чтобы было понятно другим, а себе писать можно как хочь.

Len() минусовых значений недает, либо нет текста, либо есть, но тогда сколько, центральный процЫк в долг текст недает :D

Может лучше сравнивать текст в даном случае так If Text$<>"".
Как там это будет на АСМе, а то у меня пурик чегото бред выдает, только в 3,9 версии нормально работал.
такой код:
If Len(Text$)<>0
EndIf
такой бред выдает: :?
0046014C push dword 0x5
00460151 call dword 0x4602fd
ну и куда подевал сравнение типа JE _EndIf2 как у Петра я непонял.

по крайней мере если первый символ в памяти не ноль то поехали дальше.

_________________
искатель истины


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Чт июн 07, 2018 11:48 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6413
Благодарил (а): 21 раз.
Поблагодарили: 201 раз.
Пункты репутации: 52
Я если пишу для себя, то вообще не использую Len.
Потому можно задать вопрос иначе, а зачем в это случае LEN?
Код:
1
2
3
4
5
6
7
; A$="AAAA"
If A$
  Debug A$
Else
  Debug 0
EndIf
 


Но для общественности всё же лучше писать полностью. Особенно если просто код, который потом могут переводить на другие ЯП.
Использование инкремента в виде i+1 тоже часто разворачиваю как i=i+1

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Чт июн 07, 2018 12:05 pm 
Не в сети
док
Аватар пользователя

Зарегистрирован: Ср июн 18, 2014 6:34 pm
Сообщений: 111
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
AZJIO писал(а):
У меня исходники открыты не потому что я знаю что их взломают и даю открыто.
Вы можете дать ссылку на эти ваши открытые исходники, которые вы даёте открыто?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Чт июн 07, 2018 12:44 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11336
Благодарил (а): 4 раз.
Поблагодарили: 443 раз.
Smitis писал(а):
Интересно, а во что скомпилируется инструкция "If Text$", делающая то же самое?
Для x86.
Код:
1
2
3
4
5
6
7
; If Text$
  MOV    edx,dword [v_Text$]
  XOR    ecx,ecx
  CALL _SYS_StringEqual
  JNE   _EndIf2
; EndIf
_EndIf2:



newJS писал(а):
Пётр, а как длина строки вычисляется? перебором
Да перебором. https://ru.wikipedia.org/wiki/Нуль-терминированная_строка

AZJIO писал(а):
да и кстати я вспомнил что приравнивание дескриптора к нулю hwnd<>0
Это имеет смысл, потому что если переменная хранит число со знаком, то дескриптор может иметь отрицательное значение.

AZJIO писал(а):
Сравнение с 0, это фактически проверить что все цифры в "слове" равны 0, то есть 00000000. Сравнение больше-меньше это допустим два числа 0001000 и 0000100, то есть от старшего порядка проверяем у кого быстрее встретится 1, тот и старше. При сравнении с отрицательными ещё проверить бит знака.
Это выполняется ассемблерной инструкцией AND. https://x86.puri.sm/html/file_module_x86_id_12.html

AZJIO писал(а):
Так что это всё фейк, о том что одно декомпилируемое, а другое нет.
Но факт в том что из исполняемого файла autoit можно вытащить исходник парой кликов мышки, а все потому что исходник не компилируется, а записывается в исполняемый файл интерпретатора при запуске которого извлекается в память и интерпретируется. Была бы в место этого компиляция, исходник не извлекали бы так просто.

AZJIO писал(а):
это работа какого-то конвертора в асм или ...?
У pbcompiler.exe есть ключ запуска /COMMENTED
Цитата:
-c, --commented, /COMMENTED: creates a commented '.asm' output file when creating an executable. This file can be re-assembled later when the needed modifications have been made. This option is for advanced programmers only.
Код где-то был на форуме. Сейчас тему найти не могу, выложу здесь.
Код:
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
; --------------------------------------------------------------------------------------
; Compiler Tools
;   1: To be include in PB Editor user tools
;   or
;   2: To be use as a simple tool
;   Functions:  Create with PBCompiler Dll Or Asm files
;
;   Author:     Marc VITRY - PARIS FRANCE
;               marc.vitry@wanadoo.fr
;
; --------------------------------------------------------------------------------------
 
;-Constants (WINDOW1)
 
#Window1 = 1
#W1Btn1 = 1
#W1Btn2 = 2
#W1Text1 = 3
#W1Option1 = 4
#W1Option2 = 5
#W1Check1 = 6
 
#MV_Checked = 1
#MV_RunWait =1
#MV_RunInvisible = 2
#MV_CreateDll = " /DLL"
#MV_createAsm = " /COMMENTED"
 
#Window1Flags = #PB_Window_ScreenCentered | #PB_Window_SystemMenu
 
;- Variables definition
 
Define.s SourceFileName, DestFileName, CompilFlag, CompilerPath, Compiler, Parameter
Define.l RunOption
 
;-Program Start
 
;Check Program Parameter the Source File
SourceFileName = ProgramParameter()
 
If SourceFileName = ""       ;If not running as PB Tool request Pb File
  SourceFileName = OpenFileRequester("PBasic исходный файл", "", "PBasic file |*.pb", 0 )
 
  If SourceFileName = ""
    MessageRequester("Compile TO ...", "Исходный файл не выбран", #PB_MessageRequester_Ok | #MB_ICONINFORMATION)
    End
  EndIf
EndIf
 
 
If OpenWindow( #Window1, 0,0,390,137,"Compile To...", #Window1Flags)
 
 
  ButtonGadget(#W1Btn1,300,110 ,89,25,"Выход")
  ButtonGadget(#W1Btn2,210,110 ,89,25,"Создать")
  TextGadget(#W1Text1,10,10 ,381,17,"Исходный файл:")
  OptionGadget(#W1Option1,240,40 ,153,25,"Сгенерировать DLL")
  OptionGadget(#W1Option2,240,70 ,153,25,"Сгенерировать ASM")
  CheckBoxGadget(#W1Check1,10,110,170,25,"Показать окно компилятора")
 
 
  SetGadgetText(#W1Text1,"Исходный файл: " + SourceFileName)
  ;SetGadgetState(#W1Check1, #MV_Checked)
  RunOption = #MV_RunInvisible | #MV_RunWait
 
 
  Repeat
    Delay(1)
    EventID.l = WaitWindowEvent()
   
    Select EventID
       
      Case #PB_Event_Gadget
       
        Select EventGadget()
          Case #W1Btn1                ;Quit Button
            CloseWindow(#Window1)
            End
           
          Case #W1Btn2                ;Create Button
            If Len(CompilFlag) > 0
             
              DeleteFile(DestFileName)                                        ;Delete the old file
                                                                             
              CompilerPath = #PB_Compiler_Home+"Compilers"
              Compiler = CompilerPath + "\PbCompiler.exe"                     ; The PB Compiler !!
              Parameter = Chr(34) + SourceFileName + Chr(34) +" /THREAD" + CompilFlag
              RunProgram(Compiler , Parameter, CompilerPath, RunOption)
             
              Select CompilFlag
                Case #MV_CreateDll
                  CopyFile(CompilerPath + "\purebasic.dll", DestFileName)
                Case #MV_createAsm
                  CopyFile(CompilerPath + "\purebasic.asm", DestFileName)
              EndSelect
             
              If ExamineDirectory(0,GetPathPart(DestFileName),GetFilePart(DestFileName))
                If NextDirectoryEntry(0) = 1
                  MessageRequester("Compile TO ...", DestFileName + " файл создан!", #PB_MessageRequester_Ok | #MB_ICONINFORMATION)
                Else
                  MessageRequester("Compile TO ...", "Создание файла потерпело " + DestFileName + " неудачу!", #PB_MessageRequester_Ok | #MB_ICONINFORMATION)
                EndIf
              EndIf
             
            Else
              MessageRequester("Compile TO ...", "Пожалуйста выберите что скомпилировать", #PB_MessageRequester_Ok | #MB_ICONINFORMATION)    
            EndIf
           
          Case #W1Option1             ;Dll option checked
            If GetGadgetState(#W1Option1) = #MV_Checked
              CompilFlag = #MV_CreateDll
              DestFileName = Left(SourceFileName,Len(SourceFileName) - 3) + ".dll"
            EndIf
           
          Case #W1Option2             ;Asm option checked
            If GetGadgetState(#W1Option2) = #MV_Checked
              CompilFlag = #MV_createAsm
              DestFileName = Left(SourceFileName,Len(SourceFileName) - 3) + ".asm"
            EndIf
           
          Case #W1Check1              ;Compiler Run Mode
            If GetGadgetState(#W1Check1) = #MV_Checked
              RunOption = #MV_RunWait
            Else
              RunOption = #MV_RunInvisible | #MV_RunWait
            EndIf
           
        EndSelect
       
      Case #WM_LBUTTONUP     ;----LEFT BUTTON UP
       
      Case #WM_LBUTTONDOWN   ;----LEFT BUTTON DOWN
       
      Case #WM_MOUSEMOVE     ;----MOUSE MOVE
       
    EndSelect
   
  Until EventID = #PB_Event_CloseWindow
 
EndIf
End



И прекращаем споры не по теме, иначе сообщения будут редактироваться/удаляться.

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Чт июн 07, 2018 6:30 pm 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 239
Благодарил (а): 22 раз.
Поблагодарили: 33 раз.
Пункты репутации: 0
Дегтярёв писал(а):
Вы можете дать ссылку на эти ваши открытые исходники, которые вы даёте открыто?
последний офтоп
тут проги с исходниками
тут чисто сккрипт-архив, где под моим ником то что делал я, под другими никами то что делали другие
а что с гуглом? нельзя типа поискать "AZJIO и его хлам"?


kvitaliy писал(а):
If A$
я не хотел использовать Len и попробовал указать явно (в AutoIt3 это не вызывает ошибки), думал не поддерживается. А так, да, пустую строку я всегда проверял именно таким способом, и без приравнивания.

Пётр писал(а):
исходник парой кликов мышки

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Вт июн 12, 2018 6:24 am 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 239
Благодарил (а): 22 раз.
Поблагодарили: 33 раз.
Пункты репутации: 0
Пётр писал(а):
то дескриптор может иметь отрицательное значение.
а где это написано? Вообще дескриптор непонятный тип данных, так и пишут тип HANDLE или HWIND, ну взависимости как его назовут авторы своего языка, они же сами называют функции, ключевые слова и типы данных, возможно это просто бинарное число заданное просто по-порядку, типа если последний дескриптор был 5 следующие типа будет 6. Просто в этой парадигме непонятно зачем нужны отрицательные числа. Ну если только идентификаторы событий системных элементов типа кнопки закрытия, сворачивания, границы окна, прокрутки, но это не дескриптор.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Вт июн 12, 2018 7:06 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 712
Благодарил (а): 75 раз.
Поблагодарили: 21 раз.
Пункты репутации: 5
AZJIO писал(а):
Просто в этой парадигме непонятно зачем нужны отрицательные числа.

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Вт июн 12, 2018 8:57 am 
Не в сети
док
Аватар пользователя

Зарегистрирован: Ср июн 18, 2014 6:34 pm
Сообщений: 111
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
balex1978 писал(а):
Len() минусовых значений недает, либо нет текста, либо есть,

А, может, даёт минусовые значения, но, мы не знаем при каких обстоятельствах.
Есть же функции, которые возвращают -1 при каких-то обстоятельствах
Предположительно, допустим, функция Len() не смогла измерить длину при непомерной величине строки, возможно, тогда вернёт отрицательную величину.
А может и не вернёт, мы этого не знаем, это надо спрашивать не здесь, а у разработчиков.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Вт июн 12, 2018 9:19 am 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 239
Благодарил (а): 22 раз.
Поблагодарили: 33 раз.
Пункты репутации: 0
Дегтярёв писал(а):
А может и не вернёт, мы этого не знаем, это надо спрашивать не здесь, а у разработчиков.
Теоретически разработчик должен это документировать. Нет такого понятия может или не может, либо да либо нет. По крайней мере в AutoIt3 есть один случай (оригинал SetError и моё с самовольной поправкой SetError, см 3-й параметр), когда автор не документировал возврат ошибки, вернее он задокументировал неопределённое значение, типа полагаться нельзя, то есть нельзя результат использовать для каких то выводов. Я попросил чтобы результат привели к ожидаемому (он противоположен ожидаемому), так как я на этом "лоханулся" и другие могут или хотя бы добавить уточнение, что если не указано значение то возвращает не ожидаемое. Но меня проигнорировали, сказали не документирована как результат и этого достаточно.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Вт июн 12, 2018 10:47 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11336
Благодарил (а): 4 раз.
Поблагодарили: 443 раз.
AZJIO писал(а):
а где это написано?
Если переменная знаковая (т. е. старший бит хранит признак того что число положительное или отрицательное), то есть вероятность что результат будет отрицательным потому что установлен старший бит. Т. е. это не потому что дескриптор отрицательный, а из-за особенностей знаковых переменных.

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


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

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


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

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


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

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