Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 154

/ вопрос открыт /

Доброго времени суток. Хотел кое что узнать. я перешел с Delphi 7 на Embarcadero RAD Studio XE2 и решил воссоздатьшифратор в более красивом оформлении. но не смог достич нужного результата. после шифрации текста и вывода его в Memo, в поле появляются различные квадраты и- то есть программа не может их прочитать. и символы совершенно отличающиеся от тех, что были на такой же программе в delphi 7. так вот , что я хотел узнать, как сделать так чтобы поле Memo вновь нормально фунционировала и поддерживала все иероглифы. кому надо код функции:

 procedure TForm4.btn1Click(Sender: TObject);
var s,xxx,pass: string;
I,j,h,b,c,d: Integer;
begin
memo2.Text:='';
s:=memo1.lines.Text;
i:=Length(s);
pass:=edt1.Text;
j:=Length(pass);
h:=Round(i/j);
for b:=1 to i do
pass:=pass+pass;
pass:=Copy(pass,1,i);
for b := 1 to i do
begin
if (Ord(s[b]))-(ord(pass[b]))>255 then
memo2.lines.Text:=memo2.lines.Text+chr(ord(s[b])+ord(pass[b])-255)
else
memo2.lines.Text:=memo2.lines.Text+chr(ord(s[b])+ord(pass[b]));
end;
 
end;

skew Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: skew (статус: Посетитель)
Вопрос отправлен: 24 мая 2012, 18:12
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 22; последнее сообщение — 26 мая 2012, 22:21; участников в обсуждении: 5.

Страницы: [1] [2] [Следующая »]

skew

skew (статус: Посетитель), 24 мая 2012, 18:15 [#1]:

и при обратном декодирование программа так же не выводит зашифрованное сообщение, а выводит разные иероглифы
bugmenot

bugmenot (статус: 3-ий класс), 24 мая 2012, 18:20 [#2]:

Безумную кашу не читал, но суть в том, что Char не один байт, а два, со всеми вытекающими последствиями.
виконання програми розпочинається з того самого мiсця, де призупинилося.

skew

skew (статус: Посетитель), 24 мая 2012, 18:24 [#3]:

не совсем понимаю, что вы хотите сказать или на что указать
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 24 мая 2012, 19:55 [#4]:

Цитата (skew):

не совсем понимаю, что вы хотите сказать или на что указать

то, что в Embarcadero RAD Studio XE2 под каждый символ типа Char отводится два байта, а не один, как в предыдущих версиях Delphi для работы с Unicode
skew

skew (статус: Посетитель), 24 мая 2012, 20:10 [#5]:

понятно, но я все равно не понимаю, как исправить программу, для правильного функционала
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 24 мая 2012, 20:16 [#6]:

посмотри в help про типы данных
skew

skew (статус: Посетитель), 24 мая 2012, 20:47 [#7]:

а можно как нибудь более в крации объяснить если знаете. просто в Help слишком много всего непонятного для меня. ведь я не профессионал, а любитель
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 24 мая 2012, 20:53 [#8]:

у меня нет этой версии Delphi. Чтобы не оставаться вечно любителем, надо учиться читать help
skew

skew (статус: Посетитель), 24 мая 2012, 21:14 [#9]:

а если вам дать сам файл help
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 24 мая 2012, 21:24 [#10]:

Цитата (skew):

а если вам дать сам файл help

а мне он зачем?
skew

skew (статус: Посетитель), 24 мая 2012, 21:37 [#11]:

ну вы разбираетесь в этом и подскажете что использовать для реализации проекта
min@y™

min@y™ (статус: Доктор наук), 25 мая 2012, 08:38 [#12]:

За такой код надо руки отрывать! Хрен поймёшь, чо там творится.
procedure TForm4.btn1Click(Sender: TObject);
var
  s, xxx, pass: string;
  I, j, h, b, c, d: Integer; // Однобуквенные имена переменных - ФТОПКУ!
begin
  memo2.Text:= '';
  s:=          memo1.lines.Text; // исходный текст
  i:=          Length(s);        // длина исходного текста
  pass:=       edt1.Text;        // пароль
  j:=          Length(pass);     // длина пароля, нигде не используется
  h:=          Round(i / j);     // WTF? нигде не используется
 
  for b:= 1 to i do
    pass:= pass + pass;          // удлинение пароля в i раз (нахрена?)
 
  pass:= Copy(pass, 1, i);       // урезание пароля до длина текста (нахрена???)
 
  // шифрование, да?
  for b:= 1 to i do
    if Ord(s[b]) - Ord(pass[b]) > 255 // в delphi 7 это условие всегда равно False
      then memo2.lines.Text:= memo2.lines.Text + chr(ord(s[b]) + ord(pass[b]) - 255)
      else memo2.lines.Text:= memo2.lines.Text + chr(ord(s[b]) + ord(pass[b]));
end;
Начиная с Delphi 2009 строки и символы по умолчанию имеют кодировку Unicode, т.е. каждый символ кодируются двумя байтами. Приговор: говнокод выкинуть, написать новый с нуля.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Толяныч

Толяныч (статус: 4-ый класс), 25 мая 2012, 12:20 [#13]:

Ну вот, чел в крации просил его направить на путь, а ты его ... :-)
min@y™

min@y™ (статус: Доктор наук), 25 мая 2012, 13:04 [#14]:

А я его и направил! :)
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
skew

skew (статус: Посетитель), 25 мая 2012, 14:16 [#15]:

ну спасибо)) код писал не я, я взял заготовку с одного видео. поэтому сейчас не совсем понимаю, что нужно изменить. но все равно спасибо
min@y™

min@y™ (статус: Доктор наук), 25 мая 2012, 14:27 [#16]:

Цитата (skew):

ну спасибо)) код писал не я, я взял заготовку с одного видео. поэтому сейчас не совсем понимаю, что нужно изменить. но все равно спасибо

Ты так до пенсии программировать собираешься? Спи###л с инета, скомпилил, не работает, вывалил на форум, ПОМОГИТЕ?

Ты, чо, издеваешься??!!11
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 25 мая 2012, 14:28 [#17]:

Да, и чо такое "в крации"? До сих пор не понимаю...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
skew

skew (статус: Посетитель), 25 мая 2012, 20:15 [#18]:

я не с инета взял, ранее на delphi 7 я это делал по примеру. тогда я начинал только изучение языка. вот теперь попробовал повторить на EX2 и не увенчался успехом исход
skew

skew (статус: Посетитель), 26 мая 2012, 17:50 [#19]:

а в крации, я имел ввиду, что показать пример из неправильной функции в правильной форме
bugmenot

bugmenot (статус: 3-ий класс), 26 мая 2012, 20:08 [#20]:

в крации надо починить код взятый из инета
виконання програми розпочинається з того самого мiсця, де призупинилося.

Страницы: [1] [2] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 16:20
Выполнено за 0.03 сек.