[Quote]

    puhpol
  • 2
  • Longevity: 6 years 3 months
  • Posts: 955
  • REPUTATION:63

    [+] [-]
Приветствую Господа! aa Я не по теме:
Прикольно, вам идею подкинуть - и понеслась езда по кочкам.......
В итоге программку мини инстал нарисовали. ay
Спасибо огромное наши старшие братья! И вам полезно, и мы учимся. az

[Quote]

    nikzzzz
  • 215
  • Longevity: 6 years 1 month
  • Posts: 3245
  • REPUTATION:127

    [+] [-]
conty9,
74058Просто экономия памяти, выделяемой под переменную.
Я считал, что переменные хранятся только в виде строки, как например в батниках, а то, что они имеют тип, не знал.

[Quote]

    conty9
  • 100
  • Longevity: 6 years 2 months
  • Posts: 1330
  • REPUTATION:127

    [+] [-]
  • Location: Західна Україна
nikzzzz, команда CALC, в отличие от ENVI, хранит только число. Хотя и ENVI можно использовать для ввода числового значения, но это нерационально. CALC может хранить число как целое, обычной точности и удвоенной точности. А ENVI вначале присваивает символы числа, и только при арифметических действиях преобразует значение в число обычной точности. И, кстати, ещё один нюанс: после арифметических операций с визуально заданными целыми числами (т.е., если мы не используем #) результатом может быть реальное число обычной точности.
3+5=7.999999999 - как-то так.
Просто используются разные подпрограммы рассчёта. Другой пример: операции x*x и x в квадрате обрабатываются по разному, первая намного быстрее (умножение), вторая медленно (вознесение в степень). Хотя результат практически идентичен.

[Quote]

    Profvit
  • 1322
  • Longevity: 5 years 6 months
  • Posts: 48
  • REPUTATION:3

    [+] [-]
Приветствую! aa Все стесняюсь спросить, а чем вам MInstAll от Сrack не угодил? ah Наверное, только ленивый на ее основе не сделал себе набор программ с автоустановкой).

[Quote]

    nikzzzz
  • 215
  • Longevity: 6 years 1 month
  • Posts: 3245
  • REPUTATION:127

    [+] [-]
Profvit,
74072только ленивый на ее основе
Именно от лени все и идет, лениво перетачивать чужой инструмент под себя, да и еще и разбираться с ним, куда проще сделать свой. ab

[Quote]

    AZJIO
  • 17953
  • Longevity: 3 years
  • Posts: 593
  • REPUTATION:71

    [+] [-]
74062обычной точности и удвоенной точности
обычно есть типы Integer целое и Double с мантисой, с в 2 раза большей шириной, допустим 8 байт против 4-х. В PureBasic описание типа для double:
Типы данных с плавающей запятой (float и double) предназначены для хранения положительных и отрицательных чисел с плавающей запятой. Число с плавающей запятой хранится в форме мантиссы (значение числа без учёта порядка), и показателя степени (порядка). При этом число с плавающей запятой имеет фиксированную относительную точность и изменяющуюся абсолютную. Преимущество представления чисел в формате с плавающей запятой над представлением в формате с фиксированной запятой (и целыми числами) состоит в том, что можно использовать существенно больший диапазон значений при неизменной относительной точности. В то же время невозможно сохранить очень большое число с высокой точностью.
В AutoIt3 в такой ситуации "3+5=7.999999999" типа есть микропрограмма которая исправляет эту проблему. В Integer дробная часть числа отсекается и вычисления неправильные, возможно AutoIt3 вычисляет всегда double и корректирует.

[Quote]

    conty9
  • 100
  • Longevity: 6 years 2 months
  • Posts: 1330
  • REPUTATION:127

    [+] [-]
  • Location: Західна Україна
AZJIO, тут так же - обычной точности с плавающей запятой и удвоенной. Вроде 8 и 16 байт, точно не помню. Коррекция тоже есть, но после некоторых операций не срабатывает, я такое встречал, хоть и нечасто. Поэтому и рекомендую при работе с целыми числами использовать CALL #... Так и расход памяти меньше, и обработка быстрее (хотя на современном оборудовании что 1нс, что 100нс - незаметно), и результат нужный.

[Quote]

    AZJIO
  • 17953
  • Longevity: 3 years
  • Posts: 593
  • REPUTATION:71

    [+] [-]
74077Вроде 8 и 16 байт, точно не помню
посмотрел типы данных С++, там тоже максимальный тип данных 8 байт даже для x64. Я про то что какой бы новый язык не был придуман, он использует микрокоманды ассемблера и тип данных повторяет основные стандарты.

[Quote]

    puhpol
  • 2
  • Longevity: 6 years 3 months
  • Posts: 955
  • REPUTATION:63

    [+] [-]
Приветствую Господа! aa
Добрался наконец до вот этого сообщения:
74053nikzzzz, раз пошла такая пьянка, тогда уже лучше читать данные из внешнего файла конфига. Для примера, если наша утиль будет иметь имя MySetup.exe, тогда конфиг MySetup.cfg

Читаем конфиг

CALC #i=0 //Переменная для подсчета количества программ
CALC #NEnvi=0 //Переменная для перебора строк
FNAM TEnvi=%MyName% //Получаем в TEnvi имя запущенного файла
ENVI TEnvi=%TEnvi%.cfg //Генерируем имя конфига (имя файла с расширением cfg)
IFEX %CurDir%\%TEnvi%, //Если найден конфиг
{* READ %CurDir%\%TEnvi%,*r,DataCFG //Читаем содержимое конфига в переменную DataCFG
READ -,-1,DEnvi,%DataCFG% //Считаем количество строк в конфиге
LOOP #%NEnvi%<%DEnvi%, //Цикл чтения из конфига
{* READ -,%NEnvi%,XEnvi,%DataCFG% //Читаем в XEnvi строку %NEnvi%
CALC #NEnvi=%NEnvi%+1 //Увеличиваем номер строки
MSTR -delims:# TEnvi=<4>%XEnvi% //Читаем в переменную TEnvi последнее слово строки
FIND $%TEnvi%<>, //Если последнее слово есть, тогда
{* CALC #i=%i%+1 //Увеличиваем количество программ
MSTR -delims:# Name%i%,StartType%i%,InstString%i%,InstTime%i%=<1*>%XEnvi% //Вносим значения из строки в переменные (разделителем значений служит символ #)
MESS %Name%i%%,%StartType%i%%,%InstString%i%%,%InstTime%i%% //Индикация для теста
} } ! EXIT //Если конфиг не найден, выход из программы

Если совместить с демкой от nikzzzz

CALC #i=0
CALC #NEnvi=0
FNAM TEnvi=%MyName%
ENVI TEnvi=%TEnvi%.cfg
IFEX %CurDir%\%TEnvi%,
{* READ %CurDir%\%TEnvi%,*r,DataCFG
READ -,-1,DEnvi,%DataCFG%
LOOP #%NEnvi%<%DEnvi%,
{* READ -,%NEnvi%,XEnvi,%DataCFG%
CALC #NEnvi=%NEnvi%+1
MSTR -delims:# TEnvi=<4>%XEnvi%
FIND $%TEnvi%<>,
{* MSTR -delims:# Name[%i%],StartType[%i%],InstString[%i%],InstTime[%i%]=<1*>%XEnvi%
CALC #i=%i%+1
} } ! EXIT
//----------------------------------------------------------------
//%n% - к-во пунктов меню
calc #n=%i%
//Вычисляем размер окна
calc w=400
calc h=int(%n%/2)*20 + 170
//Создаем основное окно
@Windows %w% %h%
exit
_sub Windows,w%1h%2,Установка программ,, // Размер основного окна и его название.
labe Label1,l10t10w%1h20,Выберите программы для установки ,,0xaaaaaa,16 // Местоположение надписи, цвет,размер шрифта.
//Инфо
calc l=15
calc t=int(%n%/2)*20 + 64
labe Label2,l%l%t%t%w%1h20,====== Привет ======
//Создаем в цикле Чек боксы
envi i=0
loop %i%<%n%,
{
calc l=mod(%i%,2)*205 + 15
calc t=int(%i%/2)*20 + 40
chek Chk[%i%],l%l%t%t%w150h20,%Name[%i%]%,,1 // Чек бокс и его местоположение в окне + Имя программы
calc i=%i% + 1
}
//Кнопки
calc l=15
calc t=int(%n%/2)*20 + 108
item Button1,l%l%t%t%w100h24,Выбрать все,Sel 1 // местоположение кнопки "выбрать все"
calc l=120
item Button2,l%l%t%t%w100h24,Снять выбор,Sel 0 // местоположение кнопки "снять выбор"
calc l=280
item Button3,l%l%t%t%w100h24,Установить,Install // местоположение кнопки "Установить"
calc l=15
calc t=int(%n%/2)*20 + 84
pbar Pbar,l%l%t%t%w365h20,, // Прогрес бар и его место положение в окне
_end
_sub Sel
envi i=0
loop %i%<=%n%,
{
envi @Chk[%i%].Check=%1
calc i=%i% + 1
}
_end
_sub CheckSel
//Вычисляем общее время выполнения выбранных пунктов
envi SummaryTime=0
envi i=0
loop %i%<=%n%,
{
ifex $%Chk[%i%].Check%=1,calc SummaryTime=%SummaryTime% + %InstTime[%i%]%
calc i=%i% + 1
}
_end
_sub Install
mess Установить выбранные приложения?@#YN
find $%YESNO%=YES,
{
envi @Pbar=0
CheckSel
envi CurrentTime=0
envi i=0
loop %i%<=%n%,
{
ifex $%Chk[%i%].Check%=1,
{
envi @Label2=*** Установка %Name[%i%]% ***
exec %StartType[%i%]% %InstString[%i%]%
calc CurrentTime=%CurrentTime% + %InstTime[%i%]%
calc Percent=%CurrentTime%/%SummaryTime%*100
envi @Pbar=%Percent%
envi @Chk[%i%].Check=0
}
calc i=%i% + 1
}
envi @Label2=*** Все задания выполнены !!! ***
}
_end

Примерное содержимое конфиг-а

7-zip#-wait#%CurDir%\prog\Proga1.cmd#1
Моя программа#-wait#%CurDir%\prog\Proga2.cmd#5
===========Основные программы=================
Проверка#-wait#%CurDir%\prog\Proga3.cmd#2
-------------Дополнительно--------------------
Тест#-wait#%CurDir%\prog\Proga4.cmd#7
Proga5#-wait#%CurDir%\prog\Proga5.cmd#2
В конфиге допускаются некорректные строки (т.е., пустые строки, или строки, в которых отсутствует значение после трёх символов "#") - все они будут просто проигнорированы. Разделителем служит символ "#", и, соответственно, он не должен присутствовать ни в пути, ни в имени программ. Если подправить код, можно использовать некоторые другие разделители, например, "^","&","*".
Прикольная история. Но маленько не работает...
При первом запуске скрипта получил вот это:
.
Ладно вроде исправил - в 38 строке исправил
chek Chk[%i%],l%l%t%t%w150h20,%Name[%i%]%,,1 // Чек бокс и его местоположение в окне + Имя программы
на
chek Chk[%i%],l%l%t%t%w150h20,%Name%i%%,,1 // Чек бокс и его местоположение в окне + Имя программы
Появились названия программ но почему то первый чекбокс имя программы не выводит.
.
И еще не понятно зачем в конфиг файле выделенное значение?
Тест#-wait#%CurDir%\prog\Proga4.cmd#7
Добавлено через 22 минуты 1 секунда:
Если изменить количество строк в конфиге, первая имя не читает....
И кнопки не правильно работают....
Добавлено через 1 час 31 минута 5 секунд:
Я ДИКО ИЗВИНЯЮСЬ, похоже сам поламал.... ah

[Quote]

    avalat
  • 222
  • Longevity: 6 years 1 month
  • Posts: 176
  • REPUTATION:50

    [+] [-]
puhpol,
Проверил, у меня всё нормально. Можно на конфиг посмотреть ?

[Quote]

    puhpol
  • 2
  • Longevity: 6 years 3 months
  • Posts: 955
  • REPUTATION:63

    [+] [-]
Точно, все сам сломал.... Все работет. ah
Добавлено через 58 секунд:
avalat, Приветствую! aa
Это мои рученки шаловливые.....

[Quote]

    conty9
  • 100
  • Longevity: 6 years 2 months
  • Posts: 1330
  • REPUTATION:127

    [+] [-]
  • Location: Західна Україна
74282зачем в конфиг файле выделенное значение?
Тест#-wait#%CurDir%\prog\Proga4.cmd#7
7 - это условное время выполнения для Прога4. Можно измерять в секундах, минутах или в попугаях. Т.е., просто вклад в общее время установки.

[Quote]

    puhpol
  • 2
  • Longevity: 6 years 3 months
  • Posts: 955
  • REPUTATION:63

    [+] [-]
conty9, Приветствую! aa Понял.

Page 2 of 2


Display posts:    

Current time is: 27-Feb 19:37

All times are UTC + 3


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum