Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

StringGrid шифрование. Перед записью.

49K
03 декабря 2009 года
dapsssss
8 / / 02.11.2009
Добрый вечер. Нужно зашифровать сетку. Ниже приведён код. Есть кнопка. По нажатии данные стригнггрида записываются в файл. Используется разделитель запятой. Всё работает. Как осущесвить шифрование... Из мемо, ричь едита ит.д. шифрование у меня замечательно получается, а вот из стрингрида некак... Как поймать этот поток перед записью в тестовик??? Как осуществить шифрование?

[CPP]
Баттнклиск:
{
sdialogexe = 3 ;

for(int i = 0 ; i<StringGrid1->RowCount ; i++)
{
Table1->Strings = StringGrid1->Rows->DelimitedText ;
}


if(SaveDialog1->Execute())
{
SAVE = SaveDialog1->FileName ;
Table1->SaveToFile(SAVE + ".txt") ;
}


}[/CPP]

выше код кнопки.

Решил пользоваться самым простым методом шифра:

[CPP]AnsiString XOR_Crypt(AnsiString in, AnsiString pass)
{
AnsiString out;
for (int x=1;x<in.Length()+1;x++)
{
out += (char)(in[x] ^ pass[x%pass.Length()+1]);
}
return out;
}[/CPP]


С мемо всё просто например: Memo1->Text = XOR_Crypt("VVV\x0FRNTSBDR\x0FST","!"); - всё работает.

Или другой вариант:
{
AnsiString e=Memo1->Text, t="",m;
int d=e.Length();
char s;
int i=1, ascii, diff;
while (i<=d)
{
s=e;
ascii = s;
diff=Edit1->Text.ToInt()-ascii; // В эдите цифрвы в качестве пароля.
m = (char)diff;
t+=m;
i++;
}
Тут тоже всё работает безупречно...
А со стринггридом некак неразберуся...

Думал создать на форме мемо невидимую и в неё из стрингрида перепесывать данные а потом это мемо шифровать. Тоже не получилось. Поможете? (В стрингриде колитчесво строк неизвестно каждый раз новое.. столбцов 10 всегда....) Был ещё также вариант уже сохранённый файл открывать и шифровать но неудобно получается..

Приму любые коды, советы, выходы из ситуации...
53K
04 декабря 2009 года
Pala4
10 / / 30.11.2009
Цитата:
Как поймать этот поток перед записью в тестовик???


Если я правильно вас понял, что информацию из СтрингГрид надо кодировать перед тем как записать в файл, то я могу предложить:
1. Информацию каждой ячейки записать например в строку;
2. Произвести кодирование строки;
3. Создать поток для работы с нужным файлом;
4. Записать кодированную сироку в этот файл.

Цитата:
Как осуществить шифрование?


Хмм.. кодируйте как всегда кодировали, не вижу проблемы.
Кстати в вашем втором способе я очень сомневаюсь, думаю для вас будет проблемой произвести процесс декодирования.

Код:
{
AnsiString e=Memo1->Text, t="",m;
int d=e.Length();
char s;
int i=1, ascii, diff;
while (i<=d)
{
s=e;
ascii = s;
diff=Edit1->Text.ToInt()-ascii; // В эдите цифрвы в качестве пароля.
m = (char)diff;
t+=m;
i++;
}

Посторайтесь понять и разобраться в своём коде.
14
04 декабря 2009 года
Phodopus
3.3K / / 19.06.2008
Создайте свой шифрующий поток и сохраняйте в него.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог