то его можно прочитать из памяти функцией PeekS
В справке как-то мало описано. Можно по подробней?
PureBasic - форум |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » PureBasic - форум » Вопросы по PureBasic » Светодиодная матрица - МОДЖЕТ (антигаджет) на Пурике
то его можно прочитать из памяти функцией PeekS
В справке как-то мало описано. Можно по подробней?
А в килобайтах (или символах) сколько?
Килобайт 500.
Просто в окне "О программе" обычно не много текста и нет необходимости его упаковывать.
Сейчас так и работает. Просто хочется как можно меньше файлов "тащить" за программой.
В справке как-то мало описано.
Функции PeekS нужно передать указатель, на память (его возвращает UnPak) и функция вернет текст.
В процедуре ProgramItit_Thread есть пример.
*mem = UnPak(?GismeteoCodSity_pak) If *mem Text.s = PeekS(*mem) FreeMemory(*mem)
Килобайт 500.
По моему много для "О программе", хотя если там картинка, то нормально.
max написал(а):Килобайт 500.
По моему много для "О программе", хотя если там картинка, то нормально.
Действительно. Была картинка в конце файла, которая не отображалась в EditorGadget. После ее удаления файл весит 20 килобайт.
Решил оставить как есть. В дальнейшем библиотеку bass.dll придется"таскать за собой".
После добавления времени погода стала подтормаживать. Что может быть?
Отредактировано max (28.06.2011 21:19:19)
После добавления времени погода стала подтормаживать. Что может быть?
В каком плане притормаживать?
У меня работает нормально.
Может это были временные проблемы на сайте, откуда берутся данные о погоде?
В коде с получением и отображением времени вроде все ОК.
Кстати, в строке № 940
SetTimer_(WindowID(0),2,100, @Timer1() )
нужно 2 заменить на другое число, скажем 4, потому что таймер с идентификатором 2 уже используется для проверки доступности USB девайса.
нужно 2 заменить на другое число
Спасибо.
SetGadgetState (1, Val(ReadPreferenceString("fr1", "Нет")))
Хотелось-бы знать, что означает Val и Нет.
Хотелось-бы знать, что означает Val и Нет.
Val преобразовывает стоку в число.
Нет - это то, что вернет функция ReadPreferenceString, если не найдет ключ fr1 в INI файле.
Вообще такая запись некорректна, потому что слово Нет нельзя преобразовать в число, поэтому в такой ситуации функция Val вернет число 0.
Код можно упростить до
SetGadgetState (1, ReadPreferenceLong("fr1", 0))
Функция ReadPreferenceLong вернет 0 если не найдет ключ fr1 в файле или не будет самого INI файла. Если нужно чтобы по умолчанию (нет файла или указанного ключа в нем) возвращалось бы другое число, то его нужно указать во втором аргументе функции ReadPreferenceLong.
PS.
В справке об этом написано и на русском.
Спасибо.
А если нужно записать, делаем так:
If CreatePreferences("setting.dat") WritePreferenceLong ("fr1", GetGadgetState (1)) ClosePreferences() EndIf
И каким образом лучше организовать сохранение и чтение настроек?
А если нужно записать, делаем так:
Да, примерно так.
Выскакивает ошибка:
Запись в еще не созданный гаджет (на момент выполнения того кода, гаджет с идентификатором 90 еще не был создан).
Сначала нужно создать весь интерфейс программы, а потом уже расставлять галочки, активные пункты в выпадающих списках и т. д.
Запись в еще не созданный гаджет
Исправил. Теперь другая проблема.
Отредактировано max (30.06.2011 21:36:14)
Судя по всему, должно быть не GetGadgetState, а SetGadgetState.
Исправил. Добавил перед главным циклом.
Снова проблема: "SetGadgetState() не Функция..."
Код прилагаю.
Снова проблема: "SetGadgetState() не Функция..."
Здесь, на форуме правильно написано, а в коде должно быть SetGadgetState
т. е. пропущена буква d в имени функции.
Точняк. Теперь все
Отредактировано max (01.07.2011 21:33:41)
Привет.
Застопорился на том, что после чтения значений из файла настроек язык, курс вылют не меняются.
Что не так делаю?
И как сделать, чтобы сохранялась погода и загруженный текст?
Отредактировано max (04.07.2011 10:02:10)
Это потому что код выбра языка
If GetGadgetState(90)=0 LoadText("rus.lng") Else LoadText("eng.lng") EndIf
находился перед кодом чтения настроек.
Только исходник http://pure-basic.narod.ru/forum/MODGET … tilang.rar
И как сделать, чтобы сохранялась погода и загруженный текст?
Процедура сохранения текста из гаджета в файл.
Procedure SaveFileText(FileName.s, Gadget) If IsGadget(Gadget) File = CreateFile(#PB_Any, FileName) If File WriteString(File, GetGadgetText(Gadget)) CloseFile(File) EndIf EndIf EndProcedure
Язык теперь меняется.
Город запоминается, а все остальное без изменений.
Буду дальше "копать".
Курс валют исправил.
Сделал по анологии с языком.
If GetGadgetState(30)=0 SetGadgetText(31,Many_uk()) Else SetGadgetText(31,Many_ru()) EndIf
Отредактировано max (04.07.2011 13:01:14)
Изменил кнопки.
Взял картинки с Пурика.
Отредактировано max (04.07.2011 14:27:14)
Процедура сохранения текста из гаджета в файл.
Код:Procedure SaveFileText(FileName.s, Gadget) If IsGadget(Gadget) File = CreateFile(#PB_Any, FileName) If File WriteString(File, GetGadgetText(Gadget)) CloseFile(File) EndIf EndIf EndProcedure
То есть надо вначале сохранить в файл, а потом загрузить в гаджет?
То есть надо вначале сохранить в файл, а потом загрузить в гаджет?
А разве текст до этого не хранился в гаджете?
И как сделать, чтобы сохранялась погода и загруженный текст?
Сохранялась в файле или где?
Сохранение текста в файле:
Procedure SaveFileText(FileName.s, Text.s) File = CreateFile(#PB_Any, FileName) If File WriteString(File, Text) CloseFile(File) EndIf EndProcedure
Сохранялась в файле или где?
Открыли программу, выбрали, например, погоду, загрузили какой-то город, закрыли программу.
Снова открываем программу и в EditorGadget прогноз погоды ранее выбранного города.
Сейчас город сохраняется, а прогноз нет.
При загрузке текста вообще ни чего не сохраняется.
Как быть?
Сейчас город сохраняется, а прогноз нет.
Так нужно сохранять текущий прогноз в файле и загружать его при старте программы, или запрашивать с инета текущий прогноз для выбранного города?
Если в файле, то примеры чтения текста из файла и сохранения уже давал, а если из инета, то нужно просто при старте программы запросить прогноз как это делается при выборе города в выпадающем списке.
то нужно просто при старте программы запросить прогноз как это делается при выборе города в выпадающем списке.
Добавил это перед главным циклом:
SityNew$= Left(GetGadgetText(#ComboBox_0), 5) GetMeteo(SityNew$)
Теперь прогноз при старте загружается так:
Добавил это перед главным циклом:
Это надо было добавить в самый конец процедуры ProgramItit_Thread, в которой выполняется заполнение выпадающего списка с городами.
добавить в самый конец
Спасибо.
При загрузке текста вообще ни чего не сохраняется.Как быть?
При загрузке текста вообще ни чего не сохраняется.Как быть?
Можно подробнее.
Откуда загружается, куда сохраняется?
Вы здесь » PureBasic - форум » Вопросы по PureBasic » Светодиодная матрица - МОДЖЕТ (антигаджет) на Пурике