Можно подробнее.
Откуда загружается, куда сохраняется?
То есть если загрузить текст и закрыть программу, а потом открыть,
то в EditorGadget и в ComboBoxGadget будет пусто.
PureBasic - форум |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » PureBasic - форум » Вопросы по PureBasic » Светодиодная матрица - МОДЖЕТ (антигаджет) на Пурике
Можно подробнее.
Откуда загружается, куда сохраняется?
То есть если загрузить текст и закрыть программу, а потом открыть,
то в EditorGadget и в ComboBoxGadget будет пусто.
а потом открыть, то в EditorGadget и в ComboBoxGadget будет пусто.
Это про прогноз погоды?
ComboBoxGadget нужно заполнить названиями городов и выбрать сохраненный пункт, а затем загрузить из инета текущий прогноз погоды для выбранного города и отобразить его в EditorGadget.
Это про прогноз погоды?
Это именно про вкладку текст.
Поиск файлов и заполнение списка городов для прогноза погоды выполняется в отдельном потоке, для того, чтобы программа быстрее стартовала.
Именно в процедуре ProgramItit_Thread нужно устанавливать текущий пункт в выпадающих списках погоды и текста, а также, загружать текст и получать прогноз погоды при старте программы.
http://pure-basic.narod.ru/forum/MODGET … tilang.rar
Именно в процедуре ProgramItit_Thread
То, что доктор прописал.
А каким образом можно организовать сохранение текста в EditorGadget,
выбранного с помощью кнопки "Загрузить текст"?
Как-то странно погода сохраняется. До 72-го города нормально, а больше, то сохранится, то нет.
Это у всех или только у меня?
сохранение текста в EditorGadget,
Самого текста, или пути к файлу для повторного открытия файла при старте программы?
Если первое, то процедуру сохранения текста в файл из гаджета, выше выкладывал.
Если второе, то нужно завести строковую переменную, в которую будет заноситься путь к файлу, если его выбрать кнопкой.
При выборе файла в выпадающем списке, переменную нужно очищать.
При старте программы смотрим, если переменная пустая, тогда грузим текст из файла, выбранного в выпадающем списке, а если в ней путь к файлу, тогда загружаем текст из этого файла.
Понял. 
Что-то в спраке не нашел, как узнать полный путь к файлу, только частичный.
полный путь к файлу
К исполняемому файлу программы?
ProgramFilename()
К исполняемому файлу программы?
Путь к программе я знаю как найти, а вот путь к файлу, который лежит где-то на жестком диске, нет.
Нашел как найти часть пути, расширение файла, название и расширение файла, но соеденить воедино не могу понять как.
Отредактировано max (05.07.2011 19:13:15)
Путь к программе я знаю как найти, а вот путь к файлу, который лежит где-то на жестком диске, нет.
Пойди туда, не знаю куда, найди то, не знаю что....
Ну хоть по каким признакам искать?
Что за файл и где он обычно бывает, потому что сканировать весь диск компа это очень долго!
То есть я открыл какой-то файл с диска.
а вот путь к файлу, который лежит где-то на жестком диске, нет. Нашел как найти часть пути, расширение файла, название и расширение файла, но соеденить воедино не могу понять как.
То есть я открыл какой-то файл с диска.
Ну.
Если файл был выбран, например с помощью OpenFileRequester, то функция вернет абсолютный путь к файлу.
StandardFile$ = "C:\autoexec.bat" ; set initial file+path to display
; With next string we will set the search patterns ("|" as separator) for file displaying:
; 1st: "Text (*.txt)" as name, ".txt" and ".bat" as allowed extension
; 2nd: "PureBasic (*.pb)" as name, ".pb" as allowed extension
; 3rd: "All files (*.*) as name, "*.*" as allowed extension, valid for all files
Pattern$ = "Text (*.txt)|*.txt;*.bat|PureBasic (*.pb)|*.pb|All files (*.*)|*.*"
Pattern = 0 ; use the first of the three possible patterns as standard
File$ = OpenFileRequester("Please choose file to load", StandardFile$, Pattern$, Pattern)
If File$
MessageRequester("Information", "You have selected following file:" + Chr(10) + File$, 0)
Else
MessageRequester("Information", "The requester was canceled.", 0)
EndIfТеперь дошло. 
А как очистить строковую переменную? Так:
Put=0
А как очистить строковую переменную?
Text.s="Тут текст" Debug Text Text="" Debug Text
Ясно.
В итоге на ум пришло следующее:
Global Put.s ;абсолютный путь к файлу
в процедуре ProgramItit_Thread сделал так
If Put=""
File$ = Path$ + GetGadgetText(48)+".txt"
Else
File$ = Put
If FileSize(File$)>0
Text=ReadText(File$)
SetGadgetText(49,Text)
EndIf
EndIfв событиях компонентов добавил
Case 48
If EventType() = 1 ; Выпадающий список закрылся
File$ = Path$ + GetGadgetText(48)+".txt"
Text=ReadText(File$)
SetGadgetText(49,Text)
Put=""
EndIf
Case 50
File$ = OpenFileRequester(open, "", Maska , 0)
If File$
Put=File$
Text=ReadText(File$)
SetGadgetText(49,Text)
EndIfНо что-то не пошло. Куда дальше копать?
Но что-то не пошло.
Что именно не пошло?
Содержимое переменной сохраняется/считывается из файла с настройками?
Содержимое переменной сохраняется/считывается из файла с настройками?
А вот этого я неделал. Щас попробую.
При компеляции выскакивает ошибка:
При компеляции выскакивает ошибка:
Раз сохраняется строковая переменная, то нужно использовать WritePreferenceString.
С чтением тоже самое.
С кнопки теперь сохраняется, а в ComboBoxGadget название файла есть, но EditorGadget пустой. 
ComboBoxGadget название файла есть, но EditorGadget пустой
Отладчик что показывает?
If Put=""
File$ = Path$ + GetGadgetText(48)+".txt"
Debug File$
Else
File$ = Put
Debug File$
If FileSize(File$)>0
Text=ReadText(File$)
SetGadgetText(49,Text)
EndIf
EndIfИ при Put="", и в другом случае путь к файлу правильный. 
Я имел в виду, пошаговое выполнение программы, чтобы посмотреть в каком месте сценарий работы идет не так, как задумано.
Сделай так:
If Put="" File$ = Path$ + GetGadgetText(48)+".txt" Debug File$ Else File$ = Put Debug File$ EndIf If FileSize(File$)>0 Text=ReadText(File$) SetGadgetText(49,Text) EndIf
Так вроде нормально работает.
Заметил такую странность:
В конце загруженного текста добавляются символы. 
При чем каждый раз разные.
Отредактировано max (06.07.2011 12:12:17)
В конце загруженного текста добавляются символы. При чем каждый раз разные.
Если создать исполняемый файл и запустить его, будет тоже самое?
Просто отладчик метит переменные для проверки выхода за их границы.
Вы здесь » PureBasic - форум » Вопросы по PureBasic » Светодиодная матрица - МОДЖЕТ (антигаджет) на Пурике