Сохранение данных
|
|
Sam726 | Дата: Среда, 28 Октября 2009, 23:11 | Сообщение # 1 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Суть проэкта в том что он должен сохранять измененные данные в приложение в текстовый файл. И при следуещей загрузке буду загружатся последние сохраненные данные. В данном случае я использовал цвета объектов. Протестируйте проэкт. Подскажите, что не так, что изменить, где ошибки. Возможно есть другой способ такого действия (более легчий).
Сообщение отредактировал Mad-Dog - Среда, 28 Октября 2009, 23:11 |
|
| |
YURIY | Дата: Четверг, 29 Октября 2009, 01:37 | Сообщение # 2 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Честно, я так и не понял, каким образом проект восстанавливает якобы сохранённые цвета. Точнее понял, но неясно зачем при переходе с первой страницы на вторую заменять мои сохранённые настройки дефолтными... Странная логика. Вот это вообще интересная фишка Code file1$='D:\color.txt' RetVal=StrToLine(file1$,EditBox1$,1,TRUE) file2$='D:\color.txt' RetVal=StrToLine(file2$,EditBox2$,2,TRUE) file3$=' D:\color.txt' RetVal=StrToLine(file3$,EditBox3$,3,TRUE) Почитай в справке синтаксис команды StrToLine. А так - проект для новичка вполне сойдёт. Но там оптимизировать можно буквально всё. Но к этому ты прийдёшь со временем, не торопи события, вот и весь совет. Ну и напоследок: на сайте есть проект для сохранения и загрузки данных.
Вечная память Андрею Сергееву!
|
|
| |
Sam726 | Дата: Четверг, 29 Октября 2009, 08:47 | Сообщение # 3 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| YURIY, на первой странице копируется файл при первом запуске. Естественно ее не будет в оригенале. Я ее сдела потому что думал что если у других этого файла не будет, то будет некоректная робота проэкта. А что на счет "StrToLine", так я кокраз и послушался твоего совета и читал справку. Надыбал там нужные функции, поэксперементировал, и что-то получилось. А что не так? Я как то пытался сделать сохранение данных через "SaveVariable" и "LoadVariable". Но ничего не получилось. Смотрел примеры, но там так много написано, что непонятно что и к чему.
|
|
| |
ponand | Дата: Четверг, 29 Октября 2009, 12:14 | Сообщение # 4 |
Поднаторевший
Группа: Проверенные
Сообщений: 83
Репутация: 0
Награды: 0
Статус: Offline
| Quote (Mad-Dog) А что на счет "StrToLine", так я как раз и послушался твоего совета и читал справку. Надыбал там нужные функции, поэксперементировал, и что-то получилось. А что не так? А вод зачем ты присваеваешь одно и тоже четырем разным переменным? ведь ты уже присвоил переменной file$ путь к файлу с настройками так и используй его до тех пор пока не присвоешь где нибудь в скрипте новое значение Code file$='новое значение' при этом в скрипте её ненадо даже обьявлять Code RetVal=StrToLine(file$,EditBox1$,1,TRUE) RetVal=StrToLine(file$,EditBox2$,2,TRUE) RetVal=StrToLine(file$,EditBox3$,3,TRUE) или так Code RetVal=StrToLine(file$,EditBox1$,1,1) RetVal=StrToLine(file$,EditBox2$,2,1) RetVal=StrToLine(file$,EditBox3$,3,1) почитай внимательно про функцию StrToFile она чуть выше в справочнике и внедренный файл тебе больше не понадобится и синтаксис у неё примерно такой же Script1,Script2,Script3 тебе и вовсе ненужны, напиши нужное в скрипте свойства строницы[/code] Quote (Mad-Dog) Смотрел примеры, но там так много написано, что непонятно что и к чему Зайди в раздел форума "запчасти" в нем очень много примеров для нас навичков
Сообщение отредактировал ponand - Четверг, 29 Октября 2009, 13:52 |
|
| |
YURIY | Дата: Четверг, 29 Октября 2009, 21:11 | Сообщение # 5 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Mad-Dog) Я ее сдела потому что думал что если у других этого файла не будет, то будет некоректная робота проэкта. Если файла нет, он автоматом будет создан при правильных параметрах функции StrToFile. Quote (Mad-Dog) А что не так? Третий параметр задан неправильно. Прочти справку. Quote (Mad-Dog) Я как то пытался сделать сохранение данных через "SaveVariable" и "LoadVariable". Но ничего не получилось. Смотрел примеры, но там так много написано, что непонятно что и к чему. Нечего реестр засорять такой информацией. Да и какие примеры? Зачем? Справку кто-то отменял?
Вечная память Андрею Сергееву!
|
|
| |
Sam726 | Дата: Четверг, 29 Октября 2009, 22:46 | Сообщение # 6 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Code Если файла нет, он автоматом будет создан при правильных параметрах функции StrToFile. У меня файл будет. Он будет только изменятся. Точнее будут изменятся определенные строки. В каждой строке будет код цвета. Пользователь будет его менять и новый код цвета будет перезаписывать старый. Code Третий параметр задан неправильно. Прочти справку. Они ж все индентичны. Почему там что-то не так?
|
|
| |
YURIY | Дата: Четверг, 29 Октября 2009, 22:56 | Сообщение # 7 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Mad-Dog) У меня файл будет. Я не за это. Просто зачем его копировать из Embedded на диск D:, когда его создать можно Quote (Mad-Dog) Они ж все индентичны. Почему там что-то не так? Прошу прощения. У тебя используется StrToLine, а мне показалось StrToFile. Там третий параметр булевый.
Вечная память Андрею Сергееву!
|
|
| |
Sam726 | Дата: Пятница, 30 Октября 2009, 02:53 | Сообщение # 8 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Code Я не за это. Просто зачем его копировать из Embedded на диск D:, когда его создать можно я и не буду его копировать. он будет в директории программы.
|
|
| |
YURIY | Дата: Пятница, 30 Октября 2009, 02:54 | Сообщение # 9 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Мы сейчас говорим за твой текущий проект, насколько я помню. Вот я и говорю тебе, что зря делаешь эту ненужную работу при переходе страницы.
Вечная память Андрею Сергееву!
|
|
| |
Sam726 | Дата: Воскресенье, 17 Января 2010, 23:53 | Сообщение # 10 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| YURIY, ОК! Я понял. Добавлено (17 Январь 2010, 23:53) --------------------------------------------- Блин! Не могу понять в чем проблема, где ошибка. Помогите пожалуйста! Вообщем обьясню в двух словах что и к чему. Нужно сохранить в файл данные. Code LoadText("a1$","<SrcDir>\new.txt") file$='<SrcDir>\Data'+'a1$'+'date2$'+'.'+'date1$'+'.txt' RetVal=StrToLine(file$,text$,1,TRUE) 1. Текст в файле new.txt: \ 2. date1$, date2$ и text$ это EditBox в которых вписаны цифры или текст который потом будет сохранен. Это все вписано в кнопке и при нажатии оно как бы должно сохранить данные в файл (Пример: 01.01.txt), а в итоге получается файл Dataa1$date2$.date1$.dat.tmp
|
|
| |
YURIY | Дата: Понедельник, 18 Января 2010, 00:41 | Сообщение # 11 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Mad-Dog) file$='<SrcDir>\Data'+'a1$'+'date2$'+'.'+'date1$'+'.txt' Quote (Mad-Dog) а в итоге получается файл Dataa1$date2$.date1$.dat.tmp Ну правильно. Как прописал, так и получил. У тебя переменные оформлены в кавычки. Значит, они становятся текстом.
Вечная память Андрею Сергееву!
|
|
| |
Sam726 | Дата: Понедельник, 18 Января 2010, 01:15 | Сообщение # 12 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Хм... А если без них Code file$='<SrcDir>\Data' + a1$ + date2$ + '.' + date1$ + '.txt' то файл почему то идет с расширением .tmp а не .txt
Сообщение отредактировал Mad-Dog - Понедельник, 18 Января 2010, 08:39 |
|
| |
YURIY | Дата: Понедельник, 18 Января 2010, 17:30 | Сообщение # 13 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| гм... Действительно, интересно: почему для команды StrToFile всё нормально, а для StrToLine MMB прописывает под конец .tmp
Вечная память Андрею Сергееву!
|
|
| |
Alex3A | Дата: Понедельник, 18 Января 2010, 19:28 | Сообщение # 14 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Quote (YURIY) а для StrToLine MMB прописывает под конец .tmp Очевидно сия хитрая функция подразумевает наличие указанного файла, и мало того, в нем должны быть переводы строк не менее чем число указанное в функции. А вот когда файла нет создает тмп. Вот только зачем, непонятно, функция возвращает значение и то же по рохлявому - если файл найден 1 не найден 0. В случае если файл существует но совсем пустой или не содержит перевода строки, возвращается 1, а запись не происходит.Просто в этой функции реализован основной алгоритм, но позабыли сделать обработку исключительных состояний, переложив это на плечи пользователя. И в прочем это не есть проблема, если знаеш эти ньюансы. Если файла нет, создай его спомощью StrToFile, записав в него нужное количество переводов строк. Если файл есть, проверь перед его использованием количество строк в нем, и соответственно полученному результату, прмведи его в нужное состояние. труе и фальсе определяет будет заменена строка или добавлена. Если в записуемой позиции нет строки (перевода строки н ного по счету) то записано ничего не будет. А в общем - на тебе боже что мне негоже
|
|
| |
Sam726 | Дата: Понедельник, 18 Января 2010, 21:41 | Сообщение # 15 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Ну вот. Другое дело. Сначало создаем: Code file$='C:\test.txt' For i=1 To 10 string$='Строка '+CHAR(i) RetVal=StrToFile(file$,string$,TRUE,TRUE) Next i А потом изменяем... Спасибки
Сообщение отредактировал Mad-Dog - Понедельник, 18 Января 2010, 21:41 |
|
| |
Alex3A | Дата: Понедельник, 18 Января 2010, 22:21 | Сообщение # 16 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Quote (Mad-Dog) А потом изменяем... В принципе нет хреновых вещей, просто ими надо уметь пользоваться Ну это что бы самому что то видно было, а так достаточно будет записать по пробелу в каждую строку, Code file$='C:\test.txt' For i=1 To 10 string$=' ' RetVal=StrToFile(file$,string$,TRUE,TRUE) Next i Или просто создать строку из нужного количества переводов строки, и один раз ее записать. Code file$='C:\test1.txt' string$='' For i=1 To 10 string$=string$+CHR(13)+CHR(10) Next i RetVal=StrToFile(file$,string$,TRUE,TRUE)
|
|
| |
Sam726 | Дата: Вторник, 19 Января 2010, 08:47 | Сообщение # 17 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Блин. Я вроде все 1 и 0 перепробовал, но ничего не получилось. Вообщем получается что если файла нет, то все нормально, оно его создаст с нужным количеством строк. А если файл существует, то не перезапишет его, а добавит в конец.
|
|
| |
YURIY | Дата: Вторник, 19 Января 2010, 16:50 | Сообщение # 18 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Вот таким образом создаётся файл, если его нет, и перезаписывается, если он существует: Code file$='C:\test.txt' string$='Этот текст будет добавлен в текстовый файл.' RetVal=StrToFile(file$,string$,FALSE,FALSE) Что сложного - понять не могу. В справке всё чётко написано.
Вечная память Андрею Сергееву!
|
|
| |
Sam726 | Дата: Вторник, 19 Января 2010, 18:55 | Сообщение # 19 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Написано то написано, но я то использую этот код: Code file$='C:\test.txt' For i=1 To 10 string$='Строка '+CHAR(i) RetVal=StrToFile(file$,string$,TRUE,TRUE) Next i Мне нужно создать файл с 2 строчками, что бы потом с помощью: Code file$='<SrcDir>\Data'+'a1$'+'date2$'+'.'+'date1$'+'.txt' RetVal=StrToLine(file$,text$,1,TRUE) Изменять их (точнее это все будет в одной команде,сначала создает или заменяет,а потом перезаписывает). А он добавляет, а не заменяет. И как я не менял TRUE или FALSE, результат негативный!
|
|
| |
Sam726 | Дата: Вторник, 19 Января 2010, 19:08 | Сообщение # 20 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Это все что у меня получилось...
Сообщение отредактировал Mad-Dog - Вторник, 19 Января 2010, 19:09 |
|
| |
YURIY | Дата: Вторник, 19 Января 2010, 21:25 | Сообщение # 21 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Капец, сижу уже 10 минут - не могу въехать никак... Ещё конкретнее, по шагам всё изложи! Quote (Mad-Dog) Это все что у меня получилось... Что это такое? Реализация моих слов в проекте? Зачем - я и сам могу свой код вставить в кнопку! Добавлено (19 Январь 2010, 21:25) --------------------------------------------- Тебе нужно сделать проверку - существует ли файл? Если нет - создаёшь его, затем только можешь в нём менять какие-то строки. Для замены у тебя должен стоять только TRUE/1 Code RetVal=StrToLine(file$,string$,5,TRUE) Не нужно гадать и ставить наудачу когда 1, когда 0...
Вечная память Андрею Сергееву!
|
|
| |
Alex3A | Дата: Вторник, 19 Января 2010, 21:27 | Сообщение # 22 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Mad-Dog, в твоем примере, использование функции StrToLine не обнаружено. Где ты и кого и как менял, покрыто мраком неизвестности, как и то чего тебе все таки надо, и берет меня сомнение, умееш ли ты читать, не в смысле грамотности, а в смысле понимания текстов написанных другими. Или может у тебя на компе аномальное поведение софта?
|
|
| |
YURIY | Дата: Вторник, 19 Января 2010, 21:29 | Сообщение # 23 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Mad-Dog) Мне нужно создать файл с 2 строчками, что бы потом изменять их А вообще, логика просто блеск! Создать файл, чтобы изменить в нём строки! А может сразу создать файл с НУЖНЫМИ строками? Короче, вывод один. Нужно ставить конкретную задачу. Я тут сидеть и гадать могу долго. Жду конкретику, или включайся, думай. Задача у тебя элементарная.
Вечная память Андрею Сергееву!
|
|
| |
Sam726 | Дата: Вторник, 19 Января 2010, 22:03 | Сообщение # 24 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Quote А вообще, логика просто блеск! Я уже и сам немного запутался. Вообщем вот страничка из проэкта. Там все написано.
|
|
| |
Sam726 | Дата: Вторник, 19 Января 2010, 23:34 | Сообщение # 25 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Блин! Что это за фигня такая???
|
|
| |
YURIY | Дата: Среда, 20 Января 2010, 00:49 | Сообщение # 26 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Mad-Dog) Блин! Что это за фигня такая??? ОТКРОЙ СПРАВКУ!!!! НЕМЕДЛЕННО! Добавлено (20 Январь 2010, 00:49) --------------------------------------------- Quote (Mad-Dog) Вообщем вот страничка из проэкта. Там все написано Снова сделал прежний вывод: Quote (YURIY) А вообще, логика просто блеск! Создать файл, чтобы изменить в нём строки! А может сразу создать файл с НУЖНЫМИ строками? Понимаешь ли, кроме команды StrToLine есть команда StrToFile. Изучи её, что ли. Для прикола. Я смотрю, эта твоя путаница вызвана тем, что тебе нужно сохранить текст в несколько строк. Делай так: Code a$='Строка1'+CHR(13)+CHR(10)+'Строка2' a=StrToFile('C:\1.txt',a$,FALSE,FALSE) И создавай свои записи так, и изменяй тоже. Файл будет создан/перезаписан соответственно. Понял что-нибудь?
Вечная память Андрею Сергееву!
|
|
| |
Sam726 | Дата: Среда, 20 Января 2010, 00:52 | Сообщение # 27 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Хм. А я думал что CHR(13)+CHR(10) в основном только для диалоговых окон, поскольку там абзац не поставеш...
|
|
| |
Sam726 | Дата: Среда, 20 Января 2010, 01:59 | Сообщение # 28 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Ничего оно не пашет. Code a$='Строка1'+CHR(13)+CHR(10)+'Строка2' a=StrToFile('C:\1.txt',a$,FALSE,FALSE) Оно создает две строки, но вторая пустая. Ты хоть проверяеш коды перед тем как их выложить? Или тоже экспериментируеш в форуме?
|
|
| |
YURIY | Дата: Среда, 20 Января 2010, 02:05 | Сообщение # 29 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Не зли меня, пожалуйста! Кому ты рассказываешь про эксперименты на форуме? MMBшнику с 6-летним опытом работы с программой??? На, смотри как у меня:
Вечная память Андрею Сергееву!
|
|
| |
DEMBEL | Дата: Среда, 20 Января 2010, 07:12 | Сообщение # 30 |
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
| почему пустая? быть не может, написано же ...+'Строка2' ну куда бы это вдруг подевалось?
Win7x64 SP1 Neobook v5.70 (Trial) WinXP SP3 Neobook v5.62
|
|
| |