Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2009, 10:05   #1
alxd
Пользователь
 
Регистрация: 02.07.2009
Сообщений: 77
По умолчанию Раздваивание строки в StringList (Delphi 7)

Добавляю в StringList строку 'gfhjkm123' зашифрованную через XOR, сохраняю StringList в файл, смотрю результат - в файле получилось две строки. Почему? Как этого избежать?

Р.S. программка прилагается
Вложения
Тип файла: zip TestStringList.zip (3.2 Кб, 12 просмотров)
alxd вне форума Ответить с цитированием
Старый 23.09.2009, 10:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А наверное потому что в строке появляется символ #13 после шифрования.
Я бы просто подобрал другой ключ.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.09.2009, 10:48   #3
alxd
Пользователь
 
Регистрация: 02.07.2009
Сообщений: 77
По умолчанию

Сделал ключ проще (145) теперь, если читать из файла, то получается что записали туда только 'gfhjkm' вместо 'gfhjkm123'.
Может есть другой способ?

Пишу вот так

Код:
TestList.Add('НачалоСтроки~&~' + Crypt('gfhjkm123') + '~&~КонецСтроки');
TestList.SaveToFile(Dir + '\List.txt');
При чтении
Код:
TestList.LoadFromFile(Dir + '\List.txt');
Label1.Caption := TestList.Strings[0];
TestList.Strings[0] оказывается 'НачалоСтроки~~61', а окончание куда-то пропало.

Помогите разобраться, плз
Вложения
Тип файла: zip TestStringList.zip (3.5 Кб, 11 просмотров)

Последний раз редактировалось SuperVisor; 23.09.2009 в 11:05. Причина: Есть кнопка "Править" для своих сообщений..
alxd вне форума Ответить с цитированием
Старый 23.09.2009, 11:03   #4
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

А чем Вас не устраивает первый вариант?
Ни в коем случае не загружайте файл обратно в StringList!!!
StringList потому и String - он расчитан на работу со строками, а у вас уже идет уровень выходящий за рамки печатных символов.
Познавая других, мы познаем себя.
С'est la vie...

Последний раз редактировалось SuperVisor; 23.09.2009 в 11:07.
SuperVisor вне форума Ответить с цитированием
Старый 23.09.2009, 11:09   #5
alxd
Пользователь
 
Регистрация: 02.07.2009
Сообщений: 77
По умолчанию

Цитата:
Сообщение от SuperVisor Посмотреть сообщение
А чем Вас не устраивает первый вариант?
Ни в коем случае не загружайте файл обратно в StringList!!!
Первый вариант не устраивает тем, что получается в файле две строки вместо одной.
Почему не загружать обратно? Как не загружать обратно? У меня ведь все программа на этом построена
alxd вне форума Ответить с цитированием
Старый 23.09.2009, 11:28   #6
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Цитата:
Сообщение от alxd Посмотреть сообщение
Первый вариант не устраивает тем, что получается в файле две строки вместо одной.
Почему не загружать обратно? Как не загружать обратно? У меня ведь все программа на этом построена
А Вы что, криптованый текст в блокноте читать хотите??
Обратно загружайте куда угодно, только не в потомки класса TStrings - и не будет у вас второй строки...
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 23.09.2009, 11:32   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

используйте хоть теже потоки(TStream)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.09.2009, 12:19   #8
alxd
Пользователь
 
Регистрация: 02.07.2009
Сообщений: 77
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
используйте хоть теже потоки(TStream)
Примерчик можно?
alxd вне форума Ответить с цитированием
Старый 23.09.2009, 13:11   #9
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Код:
function CriptXor(InputStr,Key:String):String;
 var i,a:integer;
     xb:byte;
 begin
  Result:='';
  a:=1;
 xb:=ord(inputstr[a]);
 while a<=length(inputstr) do
 begin
  for i:=1 to Length(key) do
  begin
   xb:=xb xor ord(key[i]);
   Result:=Result+chr(xb);
   inc(a);
   if a<=Length(inputstr) then xb:=ord(inputstr[a]) else exit;
  end;
 end;
 end;

procedure TForm1.Button1Click(Sender: TObject);
var i,a,j:integer;
    xb:byte;
    inputstr,key:string;
    sl:tstringlist;
begin
 sl:=tstringlist.Create;
 sl.Add(CriptXor('gfhjkm123','Qwe45Jk~1'));
 sl.SaveToFile('d:\1.txt');
 sl.Free;
end;
SERG1980 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
stringlist grater83 Общие вопросы Delphi 2 21.09.2009 14:26
Сохранение содержимого StringList в файл rainbow Общие вопросы Delphi 1 19.11.2008 10:34
#Delphi Строки forumu Помощь студентам 3 24.12.2007 23:31
Вопрос по поводу StringList(а) KAMENYKA Компоненты Delphi 4 07.12.2007 13:01
Строки в Delphi. Wise Помощь студентам 9 03.12.2007 17:58