![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#51 |
Форумчанин
Регистрация: 07.04.2009
Сообщений: 112
|
![]()
спс я разберу попозже немног, а ща опишу на данный момент мои мысли). Я прост сегодня курсовой экзамен по физ подготовке сдал)))
Мысли: понимаешь в чем суть, я уже понял что TStringList не подходит для моей задачи. Но смотри, в итоге то получилось сохранять нормально то что в нем находится, а вот загружать не получается почему то, так что наполовину вопрос был все-таки решен. У меня теперь задача такая.. вот например есть S: Array[0..1000] String - чтобы его хранить в шифрованном виде и в минимальном размер (по крайней мере мне так казалось) я преобразовывал в памяти его в одну длинную строку типа String, которая выглядела так: "00004текст00005фраза00006строк а" где цифры - Length(строки которую нужно после них считать). Я знаю, что можно было бы хранить длину в Integer и использовать для этого TMemoryStream, TFileStream или что то вроде TStringStream(но не уверен) но мне потом нужно чтоб вся моя в итоге получившаяся длинная строка(в которой находится вся запись с массивами различных данных) шифровалась и без всяких доп данных тупо вся записывалась в файл. то есть в файле только шифрованная эта строка. Я пробовал как мне советовали здесь в посте №42 но не могу сообразить как это сделать. В примере приведенном там хранится только 1 строка а мне надо в одной строке в памяти кучу строк(различных данных) и чтоб когда она в итоге сохранялась, то в файле не было "длина строки+строка". |
![]() |
![]() |
![]() |
#52 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Когда в файле, пусть даже зашифрованном не будет длины строки, то как ты будешь узнавать что одна строка кончилась а другая началась ? можно использовать маркер (но будут скорее всего сложности с шифрованием, ведь может при шифровке получиться символ-маркер), и это лишний байт, плюс необходимость посимвольного чтения, а вот если хранить длину, то это 2 байта (не обязательно интежер хранить можно и ворд) на длину строки и никакого гемора с коллизией маркера, посимвольным чтением (читай переаллокацией строки или использования массива-буффера)
Тебе так критичны 1-2 байта, при строках в несколько сот символов ? |
![]() |
![]() |
![]() |
#53 | |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
Текстовые и двоичные данные смешивать не следует.
Строка (текст) -> шифрование -> двоичные данные (зашифрованный текст) Двоичные данные (зашифрованный текст) -> дешифрование -> строка (текст) Представлять двоичные данные в виде строки - далеко не самая удачная идея. А уж хранить их в TStringList - и того хуже. TStringList - он по определению работает с набором строк. О каком наборе строк можно говорить по отношению к двоичным данным? Цитата:
http://www.gunsmoker.ru/2011/10/pascal.html http://www.gunsmoker.ru/2011/11/blog-post_12.html
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
Последний раз редактировалось Stilet; 18.05.2012 в 07:56. |
|
![]() |
![]() |
![]() |
#54 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
я же в пост #42 давал ссылки на свой код, неужели трудно было открыть и посмотреть?!!
записать массив строк в файл легко можно так: Код:
читать примерно так: Код:
|
![]() |
![]() |
![]() |
#55 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Всю тема не осилил, но стесняюсь спросить, а почему в БД не хранить данные? Или в INI файлах?
I'm learning to live...
|
![]() |
![]() |
![]() |
#56 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
![]()
ТС записать и сосчитать из файла то не может, а вы про БД и ini-файлы... Хотя тут уже столько вариантов прозвучало хороших, что можно было на их основе уже доделать как нужно и не париться.
"ковыряю изнутри" (с)
|
![]() |
![]() |
![]() |
#57 |
Форумчанин
Регистрация: 07.04.2009
Сообщений: 112
|
![]()
ребят вы меня не понимайте прост) Я просто вижу самое оригинальное решение в том чтобы в памяти в одну длинную строку ссумировать строки и все данные массивов и их длинны.. то есть получится одна длииинная строка в ПАМЯТИ! а потом ее шифруем(в памяти) и сохраняем то что получилось в файл! и обратно. Про ини файлы молчу.. этот способ не подойдет потому что опять же длинна строки максимум 255 символов)) Про БД тож нет смысла, потому что их можно открыть в том же accesse к примеру пусть даже если сменить расширение файла. Лан ща выложу программку в которой реализовано то что я описал, но все операции делаются со String (т.е. булевский тип чтоб хранить то это символы 0 и 1, если нужно хранить число 23 (Integer) то это String "00023". и тд. Просто я думаю что можно сделать такую же строку но integer уже к примеру будет занимать 4 байта а не 5 или 10 как у меня. только у меня что то не получается. В программе жмем на кнопки по по порядку 1-2-3(запись данных в строку), 4-5-6 (чтение из строки)
Последний раз редактировалось JekaDefer; 18.05.2012 в 20:30. |
![]() |
![]() |
![]() |
#58 | ||
Сливочное масло
Участник клуба
Регистрация: 01.01.2011
Сообщений: 1,149
|
![]() Цитата:
Цитата:
Сливочное масло Valio - компиляция как по маслу
|
||
![]() |
![]() |
![]() |
#59 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
JekaDefer, по-моему, это ты чего-то не понимаешь.
Есть две вещи: 1. Как хранить. 2. Что хранить. 1 может быть ini-файл, текстовый файл, двоичный файл своего формата, БД и так далее. 2 может быть данные в чистом виде, кодированные данные и зашифрованные данные. 1 от 2 никак не зависит и наоборот.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
#60 |
Форумчанин
Регистрация: 07.04.2009
Сообщений: 112
|
![]()
просто вы с таким не сталкивались вот и все)
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Tstringlist - максимальная длинна строки и макс.кол-во строк? | paravoz1k | Компоненты Delphi | 4 | 03.02.2020 13:52 |
Удалить пустые строки из TStringList | apromix | Общие вопросы Delphi | 5 | 14.09.2016 12:14 |
Куда деваются русские буквы? | Islam_2011 | Общие вопросы C/C++ | 2 | 18.09.2011 10:20 |
Добавление в TMemo, последней строки из TStringList | OPF_Nik | Помощь студентам | 3 | 31.01.2010 17:35 |
Подскажите, куда деваются переаменные? Visual C++ | Sh2009 | Помощь студентам | 4 | 07.05.2009 00:34 |