Можно подробнее.
Откуда загружается, куда сохраняется?
То есть если загрузить текст и закрыть программу, а потом открыть,
то в 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 » Светодиодная матрица - МОДЖЕТ (антигаджет) на Пурике