Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.02.2010, 11:11
Mixali4 Mixali4 вне форума
Прохожий
 
Регистрация: 06.02.2010
Сообщения: 3
Репутация: 10
По умолчанию В чем лучше хранить

Есть 4 массива, каждый состоит из элементов типа запись, для каждого своя; каждая запись в свою очередь состоит из элементов типа: boolean, integer, TColor, String[10].
Так вот вопрос: в какого типа файле все это удобнее всего хранить? Чтобы при загрузке программы данные загружались, и когда нужно сохранялись.
Пробовал создавать запись, содержащую эти 4 массива, но при большом количестве элементов массива возникает ошибка при записи в типизированный файл
Ответить с цитированием
  #2  
Старый 06.02.2010, 13:36
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Для удобства и скорости доступа, конечно лучше типизированный файл.
Скорее всего вы что-то неправильно делали при сохранении, а ошибок быть не должно при создании типизированного файла, независимо от количества данных.
Код в студию.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 06.02.2010, 15:15
Mixali4 Mixali4 вне форума
Прохожий
 
Регистрация: 06.02.2010
Сообщения: 3
Репутация: 10
По умолчанию

Спасибо, сам думал насчет типизированных файлов.
Разобрался почему не работало, вопрос отпадает

просто делал так:
Код:
......
var f: File of TMGraph;
    g: TMGraph;
begin
 assignfile(f,FilePath.Text);
 rewrite(f);
 write(f,g);
 closefile(f);
end;
.......

хотя данные все писались в глобальную переменную, которую теперь здесь и указал:
Код:
......
var f: File of TMGraph;
begin
 assignfile(f,FilePath.Text);
 rewrite(f);
 write(f,graph);
 closefile(f);
end;
.......
теперь все работает и сохраняет.
Писал куски кода в разные дни, и забыл

тут попутно возник еще вопросик:
как бы эти данные по пути зашифровывать и расшифровывать. Сам алгоритм шифрования знаю, просто не совсем понятно в какой момент производить шифрование и в какой структуре хранить информацию.
В общем то можно создавать файл, потом его открывать чтобы зашифровать, и это содержимое сохранять в файл, а первый - удалять. А еще какой-нибудь способ есть?

Последний раз редактировалось Mixali4, 06.02.2010 в 15:28.
Ответить с цитированием
  #4  
Старый 06.02.2010, 17:43
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Обычно шифрование идет при записи в файл соответственно дешифровка при чтении из файла. Т.е. само приложение работает с нормальными данными.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 06.02.2010, 18:18
Mixali4 Mixali4 вне форума
Прохожий
 
Регистрация: 06.02.2010
Сообщения: 3
Репутация: 10
По умолчанию

ну это понятно.
а вот как бы реализовать запись той же структуры данных в типизированный файл с шифрованием?
Ответить с цитированием
  #6  
Старый 07.02.2010, 12:29
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

К примеру есть 2 Функции вида:
1. function encoder(Text : string):String;//шифратор
2. function decoder(Code : string):String;//дешифратор
Одна из реализаций...
Чтение из файла...читаем дешифруем
Код:
type
 Trec : record;
  rec1 : string;
  rec2 : string;
 end;
...
var
 Rec : Trec;
begin
 assignfile...
 reset...
 read(file, rec);
 closefile...
 with rec do
 begin
  rec1 := decode(rec1);
  rec2 := decode(rec2);
 end;
end;
Запись в файл...шифруем записываем
Код:
type
 Trec : record;
  rec1 : string;
  rec2 : string;
 end;
...
var
 Rec : Trec;
begin
 with rec do
 begin
  rec1 := encode(rec1);
  rec2 := encode(rec2);
 end;
 assignfile...
 rewrite...
 wrile(file, rec);
 closefile...
end;
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #7  
Старый 07.02.2010, 12:33
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Сообщение от Mixali4
состоит из элементов типа: boolean, integer, TColor, String[10].
Цитата:
Сообщение от NIch
Код:
1. function encoder(Text : string):String;//шифратор
И у него сразу же получится ошибка
Ответить с цитированием
  #8  
Старый 07.02.2010, 12:59
Аватар для Ferra
Ferra Ferra вне форума
Местный
 
Регистрация: 12.03.2006
Адрес: Минск
Сообщения: 527
Репутация: 1336
По умолчанию

Паскалевский подход к файлам, описанный выше, в данном случае не очень удобен. Юзай TStream.
__________________
Нет повести печальнее на свете, чем повесть о заклиневшем Resete.
Ответить с цитированием
  #9  
Старый 07.02.2010, 13:30
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Цитата:
И у него сразу же получится ошибка
Я просто показал вариант кодирования/декодирования строк структуры при операциях с файлами...Не привязываясь к типу данных...
При том, что он не указал с какими данными работает применяемый им алгоритм шифрования, я выбрал тип наугад...
Все типы данных можно привести к другому...просто перед шифрованием нужно его даные конвертировать в нужный тип данных...
Насчет паскалевского подхода, он работает и все тут...с файлами можно работать по разному...этот метод нагляднее...
__________________
В начале был Бит, потом Байт и только потом появилось Слово...

Последний раз редактировалось NIch, 07.02.2010 в 13:34.
Ответить с цитированием
  #10  
Старый 07.02.2010, 16:34
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Сообщение от NIch
Я просто показал вариант кодирования/декодирования строк структуры при операциях с файлами...Не привязываясь к типу данных...
Если он применит твой пример у автора темы сложиться довольно таки неудачное мнение. И получится как с некоторыми другими товарищами - ужаснейшая программа.
Ответить с цитированием
  #11  
Старый 08.02.2010, 09:15
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

ОК Konrad
Но мог бы и показать как это реализовать, а не цитировать и критиковать меня...
Если есть мнение отличное от моего выскажи его, а показывать мне на мои ошибки нелепо, т.к. я предложил версию как вариант, а не готовое решение обязательное к исполнению...
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #12  
Старый 04.03.2010, 18:35
UltraBloxX UltraBloxX вне форума
Новичок
 
Регистрация: 13.05.2009
Сообщения: 66
Репутация: 10
По умолчанию

Ну можно вообще после записи заXORить файл.
Ответить с цитированием
  #13  
Старый 04.03.2010, 19:24
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Можно, но это защита от дураков...
Хотя XOR практически неломаем при длине пароля равном или большем длине сообщения...ИМХО...
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:45.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter