PureBasic - форум

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

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


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка


Вопросы новичка

Сообщений 301 страница 330 из 1000

301

да, в файлах, в данном случае в txt. А как сделать в виде ini, если текста у меня не так мало будет  и его структура как выше написанная. Или можно как то полегче?? Примерчику буду рад :)

0

302

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

А как сделать в виде ini

Код:
If CreatePreferences("C:\Dannie.xxxx");создаём файл Dannie.xxxx на диске С (расширение может быть любым)

  PreferenceGroup("термин1");записываем данные для термина1
    WritePreferenceString("содержание", "БлаБлаБла")
    WritePreferenceString("описание", "БлуБлуБлу")
  PreferenceGroup("термин2");записываем данные для термина2
    WritePreferenceString("содержание", "ХряХряХря")
    WritePreferenceString("описание", "ХруХруХру")
    
  PreferenceComment("Коментарий одной части")
      
  PreferenceGroup("термин3");записываем данные для термина3
    WritePreferenceString("содержание", "МдаМдаМда")
    WritePreferenceString("описание", "ГнуГнуГну")
  PreferenceGroup("термин4");записываем данные для термина4
    WritePreferenceString("содержание", "И Т.Д...")
    WritePreferenceString("описание", "И Т.Д...")
    
  PreferenceComment("Коментарий другой части ")
    
  PreferenceGroup("термин5");записываем данные для термина5
    WritePreferenceString("содержание", "И Т.Д...")
    WritePreferenceString("описание", "И Т.Д...")

  ClosePreferences();закрываем файл
EndIf


OpenPreferences("C:\Dannie.xxxx");открываем наш файл

  PreferenceGroup("термин4");читаем данные для термина4
    Debug ReadPreferenceString("содержание", "Значение по умолчанию, если нет записи или preference файл не был открыт")
    Debug ReadPreferenceString("описание", "Значение по умолчанию, если нет записи или preference файл не был открыт")
  PreferenceGroup("термин5");читаем данные для термина5
    Debug ReadPreferenceString("содержание", "Значение по умолчанию, если нет записи или preference файл не был открыт")
    Debug ReadPreferenceString("описание", "Значение по умолчанию, если нет записи или preference файл не был открыт")
  PreferenceGroup("термин1");читаем данные для термина1
    Debug ReadPreferenceString("содержание", "Значение по умолчанию, если нет записи или preference файл не был открыт")
    Debug ReadPreferenceString("описание", "Значение по умолчанию, если нет записи или preference файл не был открыт")
  PreferenceGroup("термин3");читаем данные для термина3
    Debug ReadPreferenceString("содержание", "Значение по умолчанию, если нет записи или preference файл не был открыт")
    Debug ReadPreferenceString("описание", "Значение по умолчанию, если нет записи или preference файл не был открыт")
  PreferenceGroup("термин2");читаем данные для термина2
    Debug ReadPreferenceString("содержание", "Значение по умолчанию, если нет записи или preference файл не был открыт")
    Debug ReadPreferenceString("описание", "Значение по умолчанию, если нет записи или preference файл не был открыт")
  PreferenceGroup("термин N икс");читаем данные для термина икс
    Debug ReadPreferenceString("содержание", "Содержание по умолчанию, если нет записи или preference файл не был открыт")
    Debug ReadPreferenceString("описание", "Описание по умолчанию, если нет записи или preference файл не был открыт")
    
ClosePreferences();закрываем файл

0

303

Спасибо, на самом деле так легче.  :cool:

0

304

Тестирую данный способ и возник противный недочет. Вот текст файла:

Код:
[растяжение мышцы]
описание = растяжение мышцы очень негативный фактор, который плохо сказывается на здоровье
лечение = при растяжении мышцм рекоминдуется смазать данное место
[разрыв мышцы]
описание = при разрыве мышци очень больно
лечение = разрыв мышцы лечится хирургическим вмешательством

Вот код программы:

Код:
Procedure openprefer()
OpenPreferences("\muscul_data.mf")
PreferenceGroup("растяжение мышцы")
 Debug ReadPreferenceString("описание", "невозможно найти описание")
 Debug ReadPreferenceString("лечение", "невозможно найти описание")
ClosePreferences() 
EndProcedure
openprefer()

Вопрос: почему в отладчике пишет "невозможно найти описание", если я вроде все правильно сделал. PS: файл создал вручную на основе выше написанного пример, только заменив на свое

0

305

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

Вопрос: почему в отладчике пишет "невозможно найти описание", если я вроде все правильно сделал.

У меня работает!
Точно путь к файлу правильный?

0

306

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

Точно путь к файлу правильный?

Вот я не внимательный. Нужно было так:

Код:
"data\muscul_data.mf"

:)

Отредактировано daiomik (21.04.2010 21:40:50)

0

307

Почему в этой процедуре происходит ошибка:

Код:
Procedure openprefer()
zap.s=GetGadgetState(#Listview_4)
OpenPreferences("data\muscul_data.mf")
PreferenceGroup(zap)
 opisanie.s=ReadPreferenceString("описание", "невозможно найти описание")
 lechenie.s=ReadPreferenceString("лечение", "невозможно найти описание")
 SetGadgetText(#Editor_3,opisanie)
 SetGadgetText(#Editor_4,lechenie)
ClosePreferences() 
EndProcedure

0

308

Код:
zap.s=GetGadgetState(#Listview_4)

Попытка записи числа в строковую переменную!
Наверное нужно что-то типа этого.

Код:
Попробуй zap.s=GetGadgetText(#Listview_4)

Да и в программе стоит проверять открыт ли файл muscul_data.mf, если нет, то сообщать юзеру об этом.

Код:
Procedure openprefer()
 If OpenPreferences("data\muscul_data.mf")
   PreferenceGroup(GetGadgetText(#Listview_4))
   SetGadgetText(#Editor_3,ReadPreferenceString("описание", "невозможно найти описание"))
   SetGadgetText(#Editor_4,ReadPreferenceString("лечение", "невозможно найти описание"))
   ClosePreferences() 
 Else
   MessageRequester("Ошибка", "Нет файла "+Chr(34)+"muscul_data.mf"+Chr(34), #MB_OK|#MB_ICONERROR)
 EndIf
EndProcedure

0

309

Спасибо, все получилось. Данная структура намного легче.

0

310

Как добиться такого эффекта, когда при добавлении текста в EditorGadget он добавлялся не одной строчкой, как у меня, а текстом, то есть что бы текст автоматически переносился. Для добавления текста я использую SetGadgetText

0

311

Нужен перенос по словам?
Вот пример

Код:
If OpenWindow(0, 0, 0, 322, 150, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    EditorGadget(0, 8, 8, 306, 133)
    SendMessage_(GadgetID(0),#EM_SETTARGETDEVICE, #Null, 0)
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

0

312

Спасибо, то что нужно

0

313

Подскажите как создать подсказки в Статус-е бар при наведении на любой гаджет или пункт меню

0

314

С гаджетами можно поступить примерно как здесь Создатель программ

Пример подсказок для меню

Код:
#Window = 1 
#MenuFocus = 287 
#Menu = 1 

Enumeration 100 
  #Menu1 
  #Menu2 
  #Menu3 
  #Menu4 
  #Menu5 
  #Menu6 
  #StatusBar 
EndEnumeration 

Procedure  LoWord (var) 
  ProcedureReturn var & $FFFF 
EndProcedure 

Procedure MyWindowCallback(WindowID, Message, wParam, lParam) 
  Result = #PB_ProcessPureBasicEvents 

  wParamLo = LoWord (wParam) 
  lParamLo = LoWord (lParam) 

  If Message = #MenuFocus 

    If wParamLo = 0 ;File Title 
      StatusBarText(#StatusBar, 0, "File Title: Help Text") 
    ElseIf wParamLo = #Menu1 
      StatusBarText(#StatusBar, 0, "File 1: Help Text") 
    ElseIf wParamLo = #Menu2 
      StatusBarText(#StatusBar, 0, "File 2: A Much Longer Help Text") 
    ElseIf wParamLo = #Menu3 
      StatusBarText(#StatusBar, 0, "File 3: This Is The Longest Help Text. Believe Me!") 
      
    ElseIf wParamLo = 1 ;Edit Title 
      StatusBarText(#StatusBar, 0, "Edit Title: Help Text") 
    ElseIf wParamLo = #Menu4 
      StatusBarText(#StatusBar, 0, "Edit 1: Help Text") 
    ElseIf wParamLo = #Menu5 
      StatusBarText(#StatusBar, 0, "Edit 2: A Much Longer Help Text") 
    ElseIf wParamLo = #Menu6 
      StatusBarText(#StatusBar, 0, "Edit 3: This Is The Longest Help Text. Believe Me!") 
      
    EndIf 

  ElseIf Message = 32 

    If lParamLo = 5 ; menu 
      StatusBarText(#StatusBar, 0, "You are over the menu") 
    ElseIf lParamLo = 1 ; client area ; you need this to cancel the text 
      StatusBarText(#StatusBar, 0, "") 
    EndIf 

  EndIf 
  
  ProcedureReturn Result 
EndProcedure 


If OpenWindow(#Window,0,0,320,240,"Menu Help Text In Statusbar",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) 

  CreateMenu(#Menu,WindowID(#Window)) 
    MenuTitle("File") 
      MenuItem(#Menu1,"File 1") 
      MenuItem(#Menu2,"File 2") 
      MenuItem(#Menu3,"File 3") 
    MenuTitle("Edit") 
      MenuItem(#Menu4,"Edit 1") 
      MenuItem(#Menu5,"Edit 2") 
      MenuItem(#Menu6,"Edit 3") 
    
  CreateStatusBar(#StatusBar, WindowID(#Window)) 
    AddStatusBarField(320)
  SetWindowCallback(@MyWindowCallback()) 

  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow 
    
EndIf

0

315

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

С гаджетами можно поступить примерно как здесь Создатель программ. Пример подсказок для меню

Спасибо.
У меня какой то баг с тул баром. Создаю его этим кодом:

Код:
CreateToolBar(0, WindowID(#Window_0))
ToolBarStandardButton(0, #PB_ToolBarIcon_New)
ToolBarStandardButton(1, #PB_ToolBarIcon_Open)
ToolBarStandardButton(2, #PB_ToolBarIcon_Save)

в итоге получается частично закрашенная область. Почему так, что это может быть. И + к этому вопросу, возможно ли снизу этот тул бар ограничить линией, типа как сверху с меню:
http://s58.radikal.ru/i160/1004/3b/6ff6ad4b638c.jpg

PS: с тем, как ограничить тул бар разобрался. Нарисовать линию. А предыдущий вопрос, про то что на скрине так и не пойму
PSS: создал другой проект и тул бар - все работает отлично, а в моем такая фигня. Может как то перебивание и сбивание идет, путем наложения, я уже и константу имени тул бара поменял, все также

Отредактировано daiomik (22.04.2010 23:22:32)

0

316

На скрине ничего "плохого" не видно - всё одново цвета.
Можно посмотреть скрин формата PNG без перекодировки в JPG?

0

317

Только что разобрался в проблеме. Оказывается вышенаписанный код надо было поставить в конце процедуры. Видимо какой то сбой происходил.

0

318

Не могу понять проблему, возникающую у меня с окнами. При закрытии побочных окон программы, главное окно у меня почему то обновляется и вся инфа, которая было раньше стирается, + к этому на панели задач происходит как бы обновление окна (то есть оно как будто быстро закрывается и сразу открывается). Вот действия закрытия побочных окон. Правильно ли они написаны и вообще что это может быть:

Код:
If window=#Window_2
 If Event = #PB_Event_CloseWindow
  CloseWindow(#Window_2)
 EndIf
ElseIf window=#Window_1
 If Event = #PB_Event_CloseWindow
  CloseWindow(#Window_1)
 EndIf
EndIf

0

319

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

Правильно ли они написаны и вообще что это может быть

Написанны правильно.
Нужно на весь код посмотреть.
Так сказать сложно, судя по всему, главное окно повторно создаётся.

0

320

Да, Петр, ты  был прав. За место того, что бы написать

Код:
Until event=#PB_Event_CloseWindow And window=#Window_0

, я писал:

Код:
Until event=#PB_Event_CloseWindow And window=Open_Window_0()

0

321

Не могу разобраться с появлением фрейма. Только он один при запуске окна не появляется. Как мне кажется это происходит наверно из-за какогото конфликта с тул баром, так как перед этим все было ок. Вот код процедуры главного окна:

Код:
Procedure Open_Window_0()
 If OpenWindow(#Window_0, 127, 72, 765, 593, "Мед Фактор1.5 Alpha",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
  If CreateMenu(#MenuBar_0, WindowID(#Window_0))
   MenuTitle("Файл")
   MenuItem(#MENU_28, "Настройки")
   MenuBar()
   MenuItem(#MENU_1, "Выход")
   MenuTitle("Работа с телом")
   MenuItem(#MENU_4, "Иллюстрации частей тела")
   MenuItem(#MENU_13, "Лекарства")
   MenuTitle("Помощь")
   MenuItem(#MENU_8, "Справка")
   MenuBar()
   MenuItem(#MENU_22, "Сайт программы")
   MenuItem(#MENU_23, "Обновление")
   MenuBar()
   MenuItem(#MENU_9, "О программе")
  EndIf 
   
  CreateStatusBar(#StatusBar_1, WindowID(#Window_0))
  LoadImage(0,"body.jpg")
  ImageGadget(#Image_16, 15, 65, 172, 448,ImageID(0))
  TextGadget(#Text_4, 15, 45, 170, 15, "")
  Frame3DGadget(#Frame3D_01, 5, 30, 190, 520, "Человеческое тело")
  Frame3DGadget(#Frame3D_9, 205, 30, 355, 255, "Описание и возможный диагноз")
  Frame3DGadget(#Frame3D_10, 205, 290, 355, 260, "Методы лечения и лекарства")
  Frame3DGadget(#Frame3D_13, 570, 30, 190, 520, "Поиск болезней")
  StringGadget(#String_1, 580, 45, 170, 20, "")
  ListIconGadget(#ListIcon_2, 580, 70, 170, 475, "Болезнь", 160)
  EditorGadget(#Editor_3, 215, 50, 335, 230,#PB_Editor_ReadOnly)
  SendMessage_(GadgetID(#Editor_3),#EM_SETTARGETDEVICE, #Null, 0)
  EditorGadget(#Editor_4, 215, 310, 335, 235,#PB_Editor_ReadOnly)
  SendMessage_(GadgetID(#Editor_4),#EM_SETTARGETDEVICE, #Null, 0)
  ButtonGadget(#Button_75, 15, 520, 25, 20, "М")
  ButtonGadget(#Button_76, 50, 520, 25, 20, "О")
  ButtonGadget(#Button_77, 85, 520, 25, 20, "Т")
  ButtonGadget(#Button_78, 120, 520, 25, 20, "В")
  TextGadget(100,215,45,50,16,"  Кликни здесь")
  SetGadgetColor(100,#PB_Gadget_BackColor,GetSysColor_(#COLOR_INFOBK))
  HideGadget(100,1)
  
 If CreateToolBar(#ToolBar_1, WindowID(#Window_0))
  ToolBarStandardButton(#MENU_1,#PB_ToolBarIcon_New)
  ToolBarSeparator()
  ToolBarStandardButton(#MENU_9,#PB_ToolBarIcon_Help)
  ToolBarHeight=ToolBarHeight(#ToolBar_1)
  LineGadget(0, 0, ToolBarHeight,WindowWidth(#Window_0)) 
 EndIf 
 
 EndIf

EndProcedure

не появляется у меня этот гаджет:

Код:
Frame3DGadget(#Frame3D_01, 5, 30, 190, 520, "Человеческое тело")

0

322

Почему я не могу загнать в exe картинку jpg. Высвечивается ошибка. С ico нормально, а jpg, не хочет

0

323

А декодер в коде присутствует?

0

324

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

А декодер в коде присутствует?

это как? Именно jpg не хочет загружаться из памяти.

0

325

UsePNGImageDecoder()  поставь вначале своего кода.

0

326

Тьфу ты, не глядя из справки скопировал  :crazy:  UseJPEGImageDecoder() вот этот декодер надо

0

327

Это у меня есть:)

0

328

Так выложи код как он есть, или нам продолжать гадать на кофейной гуще.

0

329

Ха, разобрался. Оказывается у меня  UseJPEGImageDecoder() шла после загрузок иконок из памяти. Теперь все ок.

0

330

Скажите пожалуйста, есть ли смысл запихивать изображения в exe, если во-первых, они имеют размер 50-100 кб каждый и во-вторых их количество будет варьироваться от 50 до 200. Как в данной ситуации лучше поступить, если учесть, что в программе будет раздел с фотоиллюстрациями. Может быть dll использовать? Вообщем посоветуйте, профи :)

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка