PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Светодиодная матрица - МОДЖЕТ (антигаджет) на Пурике


Светодиодная матрица - МОДЖЕТ (антигаджет) на Пурике

Сообщений 181 страница 210 из 446

181

Пётр написал(а):

то его можно прочитать из памяти функцией PeekS

В справке как-то мало описано. Можно по подробней?

0

182

Пётр написал(а):

А в килобайтах (или символах) сколько?

Килобайт 500.

Пётр написал(а):

Просто в окне "О программе" обычно не много текста и нет необходимости его упаковывать.

Сейчас так и работает. Просто хочется как можно меньше файлов "тащить" за программой.

0

183

max написал(а):

В справке как-то мало описано.

Функции PeekS нужно передать указатель, на память (его возвращает UnPak) и функция вернет текст.
В процедуре ProgramItit_Thread есть пример.

Код:
  *mem = UnPak(?GismeteoCodSity_pak)
  If *mem
    Text.s = PeekS(*mem)
    FreeMemory(*mem)
max написал(а):

Килобайт 500.

По моему много для "О программе", хотя если там картинка, то нормально.

0

184

Пётр написал(а):
max написал(а):

Килобайт 500.

По моему много для "О программе", хотя если там картинка, то нормально.

Действительно. Была картинка в конце файла, которая не отображалась в EditorGadget. После ее удаления файл весит 20 килобайт.

Решил оставить как есть. В дальнейшем библиотеку bass.dll придется"таскать за собой".

После добавления времени погода стала подтормаживать. Что может быть?

Отредактировано max (28.06.2011 21:19:19)

0

185

max написал(а):

После добавления времени погода стала подтормаживать. Что может быть?

В каком плане притормаживать?
У меня работает нормально.
Может это были временные проблемы на сайте, откуда берутся данные о погоде?
В коде с получением и отображением времени вроде все ОК.
Кстати, в строке № 940

Код:
          SetTimer_(WindowID(0),2,100, @Timer1() )

нужно 2 заменить на другое число, скажем 4, потому что таймер с идентификатором 2 уже используется для проверки доступности USB девайса.

0

186

Пётр написал(а):

нужно 2 заменить на другое число

Спасибо.

0

187

Код:
SetGadgetState (1, Val(ReadPreferenceString("fr1", "Нет")))

Хотелось-бы знать, что означает Val и Нет.

0

188

max написал(а):

Хотелось-бы знать, что означает Val и Нет.

Val преобразовывает стоку в число.
Нет - это то, что вернет функция ReadPreferenceString, если не найдет ключ fr1 в INI файле.
Вообще такая запись некорректна, потому что слово Нет нельзя преобразовать в число, поэтому в такой ситуации функция Val вернет число 0.
Код можно упростить до

Код:
SetGadgetState (1, ReadPreferenceLong("fr1", 0))

Функция ReadPreferenceLong вернет 0 если не найдет ключ fr1 в файле или не будет самого INI файла. Если нужно чтобы по умолчанию (нет файла или указанного ключа в нем) возвращалось бы другое число, то его нужно указать во втором аргументе функции ReadPreferenceLong.

PS.
В справке об этом написано и на русском.

0

189

Спасибо.
А если нужно записать, делаем так:

Код:
If CreatePreferences("setting.dat")
WritePreferenceLong ("fr1", GetGadgetState (1))
  ClosePreferences()
EndIf

И каким образом лучше организовать сохранение и чтение настроек?

0

190

max написал(а):

А если нужно записать, делаем так:

Да, примерно так.

0

191

Привет.
Добавил после создания окна это:

Код:
  If OpenPreferences("setting.ini")
GetGadgetState(90, ReadPreferenceLong("fr1", 0))   
    ClosePreferences()
  EndIf

Выскакивает ошибка:
http://i046.radikal.ru/1106/59/e5af40b333det.jpg
Что делаю не так? :dontknow:

Отредактировано max (30.06.2011 21:42:30)

0

192

max написал(а):

Выскакивает ошибка:

Запись в еще не созданный гаджет (на момент выполнения того кода, гаджет с идентификатором 90 еще не был создан).
Сначала нужно создать весь интерфейс программы, а потом уже расставлять галочки, активные пункты в выпадающих списках и т. д.

0

193

Пётр написал(а):

Запись в еще не созданный гаджет

Исправил. Теперь другая проблема.

Отредактировано max (30.06.2011 21:36:14)

0

194

Судя по всему, должно быть не GetGadgetState, а SetGadgetState.

0

195

Исправил.  Добавил перед главным циклом.
Снова проблема: "SetGadgetState() не Функция..."
Код прилагаю.

0

196

max написал(а):

Снова проблема: "SetGadgetState() не Функция..."

Здесь, на форуме правильно написано, а в коде должно быть SetGadgetState
т. е. пропущена буква d в имени функции.

0

197

Точняк. Теперь все :cool:

Отредактировано max (01.07.2011 21:33:41)

0

198

Привет.
Застопорился на том, что после чтения значений из файла настроек язык, курс вылют не меняются.
Что не так делаю? :dontknow:
И как сделать, чтобы сохранялась погода и загруженный текст?

Отредактировано max (04.07.2011 10:02:10)

0

199

Это потому что код выбра языка

Код:
If GetGadgetState(90)=0
  LoadText("rus.lng") 
  Else
  LoadText("eng.lng")
EndIf

находился перед кодом чтения настроек.
Только исходник http://pure-basic.narod.ru/forum/MODGET … tilang.rar

max написал(а):

И как сделать, чтобы сохранялась погода и загруженный текст?

Процедура сохранения текста из гаджета в файл.

Код:
Procedure SaveFileText(FileName.s, Gadget)
  If IsGadget(Gadget)
    File = CreateFile(#PB_Any, FileName)
    If File
      WriteString(File, GetGadgetText(Gadget))
      CloseFile(File)
    EndIf
  EndIf
EndProcedure

+1

200

Язык теперь меняется.
Город запоминается, а все остальное без изменений.
Буду дальше "копать".

0

201

Курс валют исправил.
Сделал по анологии с языком.

Код:
If GetGadgetState(30)=0
  SetGadgetText(31,Many_uk()) 
  Else
  SetGadgetText(31,Many_ru())
EndIf

Отредактировано max (04.07.2011 13:01:14)

0

202

Изменил кнопки.
Взял картинки с Пурика.

Отредактировано max (04.07.2011 14:27:14)

0

203

Пётр написал(а):

Процедура сохранения текста из гаджета в файл.

Код:
Procedure SaveFileText(FileName.s, Gadget)
  If IsGadget(Gadget)
    File = CreateFile(#PB_Any, FileName)
    If File
      WriteString(File, GetGadgetText(Gadget))
      CloseFile(File)
    EndIf
  EndIf
EndProcedure

То есть надо вначале сохранить в файл, а потом загрузить в гаджет?

0

204

max написал(а):

То есть надо вначале сохранить в файл, а потом загрузить в гаджет?

А разве текст до этого не хранился в гаджете?

max написал(а):

И как сделать, чтобы сохранялась погода и загруженный текст?

Сохранялась в файле или где?
Сохранение текста в файле:

Код:
Procedure SaveFileText(FileName.s, Text.s)
  File = CreateFile(#PB_Any, FileName)
  If File
    WriteString(File, Text)
    CloseFile(File)
  EndIf
EndProcedure

0

205

Пётр написал(а):

Сохранялась в файле или где?

Открыли программу, выбрали, например, погоду, загрузили какой-то город, закрыли программу.
Снова открываем программу и в EditorGadget прогноз погоды ранее выбранного города.
Сейчас город сохраняется, а прогноз нет.
При загрузке текста вообще ни чего не сохраняется.
Как быть? :'(

0

206

max написал(а):

Сейчас город сохраняется, а прогноз нет.

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

0

207

Пётр написал(а):

то нужно просто при старте программы запросить прогноз как это делается при выборе города в выпадающем списке.

Добавил это перед главным циклом:

Код:
SityNew$= Left(GetGadgetText(#ComboBox_0), 5)
GetMeteo(SityNew$)

Теперь прогноз при старте загружается так:

0

208

max написал(а):

Добавил это перед главным циклом:

Это надо было добавить в самый конец процедуры ProgramItit_Thread, в которой выполняется заполнение выпадающего списка с городами.

+1

209

Пётр написал(а):

добавить в самый конец

Спасибо.

max написал(а):

При загрузке текста вообще ни чего не сохраняется.Как быть? :'(

0

210

max написал(а):

При загрузке текста вообще ни чего не сохраняется.Как быть?

Можно подробнее.
Откуда загружается, куда сохраняется?

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Светодиодная матрица - МОДЖЕТ (антигаджет) на Пурике