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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2014, 19:18   #1
vankai14
Пользователь
 
Регистрация: 27.05.2014
Сообщений: 11
Восклицание Загрузка и выгрузка файла TFileStream

Здравствуйте. загружаю файл TFileStream, шифрую и пытаюсь выгрузить в другой файл TFileStream.
Потом при расшифровке в исходном файле какие-то иероглифы. В том, что шифровку/дешифровку написал правильно, уверен. проверял на массивах в паскале. Может я неправильно загружаю и выгружаю его? Вот код:

Код:

var
elp:int64;

s,s1,bs,bs1,nom,buf8,razmerhvosta:byte;
keyi:file of byte;
massiv:string; round,helpwrite8:byte;
razmer,num,change,i1,sxor,helpwrite64:int64;
sizefile,ifile:longint;

OpenF:=TFileStream.Create(Edit1.Text,fmOpenRead);
  OpenF.Position:=0;

  razmer:=OpenF.Size;
  change:= razmer div 8;

  s1:=0;
  for round:=0 to change do
      begin
      i1:=0;
      for s1:=round to 7 do
                     begin
                     i1:=OpenF.Read(i1,1);
                     i1:=i1 shl (8*(7-s1));
                     fin[round]:=fin[round]+i1;
                     end;
      end;
      razmerhvosta:=razmer-(change*8);
      if (razmerhvosta<>0) then
                   begin
                     round:=round+1;
                     for s1:=0 to razmerhvosta do
                            begin
                     i1:=OpenF.Read(i1,1);
                     i1:=i1 shl (8*(7-s1));
                     fin[round]:=fin[round]+i1;
                     end;
                   end;

.......................Шифрование...............

 if radiobutton1.Checked=TRUE then
     begin
     CloseF:=Tfilestream.Create('crypted',fmCreate);
     for ifile:=0 to round do for s:=0 to 7 do
                              begin
                              helpwrite64:=((fout[ifile] shl (s*8)) shr 56 );
                              helpwrite8:=helpwrite64;
                              CloseF.Write(helpwrite8,sizeof(helpwrite8));
                              end;
     CloseF.Free;
     end;

     if radiobutton2.Checked=TRUE then
     begin
     CloseF:=Tfilestream.Create('decrypted',fmCreate);
     for ifile:=0 to round do for s:=0 to 7 do
                              begin
                              helpwrite64:=((fout[ifile] shl (s*8)) shr 56 );
                              helpwrite8:=helpwrite64;
                              CloseF.Write(helpwrite8,sizeof(helpwrite8));

                              end;
     CloseF.Free;
     end;

Последний раз редактировалось vankai14; 27.05.2014 в 19:20.
vankai14 вне форума Ответить с цитированием
Старый 27.05.2014, 19:37   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Шлупый вопрос: А чем отличается код в radiobutton1 от кода в radiobutton2?
Только именем файла?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.05.2014, 23:39   #3
vankai14
Пользователь
 
Регистрация: 27.05.2014
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Шлупый вопрос: А чем отличается код в radiobutton1 от кода в radiobutton2?
Только именем файла?
при активном радиобуттон1 происходит шифрование, а при радиобуттон2 - расшировка. отличается только очередностью применения раундовых подключей
vankai14 вне форума Ответить с цитированием
Старый 28.05.2014, 00:40   #4
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

vankai14 А можно в коде выделить разницу этих самых очерёдностей? А то я как бы тоже не замечаю разницы. Если что, речь о коде ниже ...Шифрование...
doktor255 вне форума Ответить с цитированием
Старый 28.05.2014, 08:13   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
при активном радиобуттон1 происходит шифрование, а при радиобуттон2 - расшировка.
Ладно... Предлагаю упростить:
Код:
var filename:String;
...
.......................Шифрование...............

 if radiobutton1.Checked then filename:='crypted' else
  if radiobutton2.Checked then filename:='decrypted' else;

     CloseF:=Tfilestream.Create(filename,fmCreate);
     for ifile:=0 to round do for s:=0 to 7 do
                              begin
                              helpwrite64:=((fout[ifile] shl (s*8)) shr 56 );
                              helpwrite8:=helpwrite64;
                              CloseF.Write(helpwrite8,sizeof(helpwrite8));
                              end;
     CloseF.Free;
end;
А по теме нужно отлаживать по шагам и выяснять что пишется в файл.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQLServer загрузка/выгрузка картинок и файлов Lutyi БД в Delphi 2 12.02.2014 14:37
Загрузка DLL и ее выгрузка Den7656 Помощь студентам 2 17.09.2011 14:34
Загрузка выгрузка текса и малые операции SKyzZz Общие вопросы C/C++ 1 23.03.2011 01:20
Загрузка - Выгрузка структуры из dat файла delphinewerklin Общие вопросы Delphi 4 07.02.2010 20:00
загрузка и выгрузка памяти на языке СИ Anil Общие вопросы C/C++ 5 19.12.2007 18:25