Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Пользователь


Сообщения: 93
Благодарности: 2

Профиль | Отправить PM | Цитировать


iglezz,

Ну да, должен работать, но не работает. Вот с этого кода скомпилите экзешник и сами убедитесь:


Код: Выделить весь код
                 RequestExecutionLevel user
		OutFile "test.exe"

                !include "LogicLib.nsh"
                !include "WordFunc.nsh"
                !include "TextFunc.nsh"

Function .onInit

    StrCpy $R6 "c:\"
    System::Call 'Kernel32::GetVolumeInformation(t "$R6",t.r3,i ${NSIS_MAX_STRLEN},*i,*i,*i.r1,t.r2,i ${NSIS_MAX_STRLEN})i.r0'
      ${If} $0 <> 0
    IntFmt $1 "%#.8x" $1
    StrCpy $R7 "$1"
      ${EndIf}

      ${LineSum} "Info.txt" $R0
    StrCpy $R1 0
    IntOp $R1 $R1 + 1
    IntCmp $R1 $R0 0 0 end
      ${LineRead} "Info.txt" "$R1" $R3
     end:

    StrCpy $R8 "$R3"

FunctionEnd


Section Message

           MessageBox MB_OK "    1значение  $R7  -  2значение  $R8  "

StrCmp $R7 "$R8" Well Unequal 
Well:
  MessageBox MB_OK "Значения равны"
  Goto Next
Unequal:
  MessageBox MB_OK "Значения не равны"
Next:

    StrCmp $R7 '$R8' 0 +3
DetailPrint '$$R7 == "$R8"'
    Goto +2
DetailPrint '$$R7 != "$R8"'

SectionEnd

Section File

    FileOpen $0 "Info.txt" w
    FileWrite $0 "$R7$\r$\n"
    FileClose $0

SectionEnd
Первый запуск не считается, потому что еще не будет файла Info.txt. А вот второй запуск в сообщении визуально покажет, что переменные бы равны, но по двум кодам сравнения через StrCmp $R7 '$R8' покажет, что совсем не равны.

Отправлено: 22:54, 07-04-2023 | #2709