Форум
Написать нам
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: as-master  
Форум MMB » Всё о программе Multimedia Builder » Мир Multimedia Builder » Сохранение данных (Помощ по проэкту)
Сохранение данных
Sam726Дата: Среда, 28 Октября 2009, 23:11 | Сообщение # 1
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
Суть проэкта в том что он должен сохранять измененные данные в приложение в текстовый файл. И при следуещей загрузке буду загружатся последние сохраненные данные. В данном случае я использовал цвета объектов.
Протестируйте проэкт. Подскажите, что не так, что изменить, где ошибки. Возможно есть другой способ такого действия (более легчий).
Прикрепления: MMB_4.9.8.zip (1.9 Kb)




Сообщение отредактировал 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, на первой странице копируется файл при первом запуске. :D
Естественно ее не будет в оригенале. Я ее сдела потому что думал что если у других этого файла не будет, то будет некоректная робота проэкта.
А что на счет "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 ;)
она чуть выше в справочнике и внедренный файл тебе больше не понадобится и синтаксис у неё примерно такой же redface
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 scared




Сообщение отредактировал Mad-Dog - Понедельник, 18 Января 2010, 08:39
 
YURIYДата: Понедельник, 18 Января 2010, 17:30 | Сообщение # 13
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
гм... Действительно, интересно: почему для команды StrToFile всё нормально, а для StrToLine MMB прописывает под конец .tmp scratch


Вечная память Андрею Сергееву!
 
Alex3AДата: Понедельник, 18 Января 2010, 19:28 | Сообщение # 14
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Quote (YURIY)
а для StrToLine MMB прописывает под конец .tmp

Очевидно сия хитрая функция подразумевает наличие указанного файла, и мало того,
в нем должны быть переводы строк не менее чем число указанное в функции.
А вот когда файла нет создает тмп. Вот только зачем, непонятно, функция возвращает
значение и то же по рохлявому - если файл найден 1 не найден 0. В случае если файл
существует но совсем пустой или не содержит перевода строки, возвращается 1,
а запись не происходит.Просто в этой функции реализован основной алгоритм, но позабыли
сделать обработку исключительных состояний, переложив это на плечи пользователя.
И в прочем это не есть проблема, если знаеш эти ньюансы. Если файла нет, создай его
спомощью StrToFile, записав в него нужное количество переводов строк. Если файл есть,
проверь перед его использованием количество строк в нем, и соответственно полученному результату, прмведи его в нужное состояние. труе и фальсе определяет будет заменена строка или добавлена. Если в записуемой позиции нет строки (перевода строки н ного
по счету) то записано ничего не будет.
А в общем - на тебе боже что мне негоже :D
 
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

А потом изменяем... thumbs_up
Спасибки :)




Сообщение отредактировал Mad-Dog - Понедельник, 18 Января 2010, 21:41
 
Alex3AДата: Понедельник, 18 Января 2010, 22:21 | Сообщение # 16
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Quote (Mad-Dog)
А потом изменяем...

В принципе нет хреновых вещей, просто ими надо уметь пользоваться :D
Ну это что бы самому что то видно было, а так достаточно будет записать
по пробелу в каждую строку,

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
Это все что у меня получилось... scratch
Прикрепления: Media1.zip (0.6 Kb)




Сообщение отредактировал 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 не обнаружено.
Где ты и кого и как менял, покрыто мраком неизвестности, как и то чего тебе
все таки надо, и берет меня сомнение, умееш ли ты читать, не в смысле грамотности,
а в смысле понимания текстов написанных другими.
Или может у тебя на компе аномальное поведение софта?
Прикрепления: Media1.rar (0.8 Kb)
 
YURIYДата: Вторник, 19 Января 2010, 21:29 | Сообщение # 23
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (Mad-Dog)
Мне нужно создать файл с 2 строчками, что бы потом изменять их

А вообще, логика просто блеск! Создать файл, чтобы изменить в нём строки! thumbs_up А может сразу создать файл с НУЖНЫМИ строками?

Короче, вывод один. Нужно ставить конкретную задачу. Я тут сидеть и гадать могу долго. Жду конкретику, или включайся, думай. Задача у тебя элементарная.



Вечная память Андрею Сергееву!
 
Sam726Дата: Вторник, 19 Января 2010, 22:03 | Сообщение # 24
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
redface
Quote
А вообще, логика просто блеск!

:D
Я уже и сам немного запутался. %) Вообщем вот страничка из проэкта. Там все написано.
Прикрепления: Holidays.rar (1.6 Kb)


 
Sam726Дата: Вторник, 19 Января 2010, 23:34 | Сообщение # 25
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
Блин! Что это за фигня такая???
Прикрепления: 7697295.png (51.2 Kb)


 
YURIYДата: Среда, 20 Января 2010, 00:49 | Сообщение # 26
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (Mad-Dog)
Блин! Что это за фигня такая???

ОТКРОЙ СПРАВКУ!!!! НЕМЕДЛЕННО! >:)

Добавлено (20 Январь 2010, 00:49)
---------------------------------------------

Quote (Mad-Dog)
Вообщем вот страничка из проэкта. Там все написано

Снова сделал прежний вывод:

Quote (YURIY)
А вообще, логика просто блеск! Создать файл, чтобы изменить в нём строки! thumbs_up А может сразу создать файл с НУЖНЫМИ строками?

Понимаешь ли, кроме команды StrToLine есть команда StrToFile. Изучи её, что ли. Для прикола.

Я смотрю, эта твоя путаница вызвана тем, что тебе нужно сохранить текст в несколько строк. Делай так:

Code
a$='Строка1'+CHR(13)+CHR(10)+'Строка2'
a=StrToFile('C:\1.txt',a$,FALSE,FALSE)

И создавай свои записи так, и изменяй тоже. Файл будет создан/перезаписан соответственно.

Понял что-нибудь? scratch



Вечная память Андрею Сергееву!
 
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-летним опытом работы с программой???

На, смотри как у меня:

Прикрепления: 4064066.png (71.3 Kb)



Вечная память Андрею Сергееву!
 
DEMBELДата: Среда, 20 Января 2010, 07:12 | Сообщение # 30
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
почему пустая? быть не может, написано же ...+'Строка2' ну куда бы это вдруг подевалось?



Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Форум MMB » Всё о программе Multimedia Builder » Мир Multimedia Builder » Сохранение данных (Помощ по проэкту)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: