|
Вопрос # 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 (статус: Посетитель)
Вопрос отправлен: 24 мая 2012, 18:12
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 22; последнее сообщение — 26 мая 2012, 22:21; участников в обсуждении: 5.
Страницы: [1] [2] [Следующая »]
|
skew (статус: Посетитель), 24 мая 2012, 18:15 [#1]:
и при обратном декодирование программа так же не выводит зашифрованное сообщение, а выводит разные иероглифы
|
|
bugmenot (статус: 3-ий класс), 24 мая 2012, 18:20 [#2]:
Безумную кашу не читал, но суть в том, что Char не один байт, а два, со всеми вытекающими последствиями.
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
skew (статус: Посетитель), 24 мая 2012, 18:24 [#3]:
не совсем понимаю, что вы хотите сказать или на что указать
|
|
Мережников Андрей (статус: Абитуриент), 24 мая 2012, 19:55 [#4]:
Цитата (skew):
не совсем понимаю, что вы хотите сказать или на что указать
то, что в Embarcadero RAD Studio XE2 под каждый символ типа Char отводится два байта, а не один, как в предыдущих версиях Delphi для работы с Unicode
|
|
skew (статус: Посетитель), 24 мая 2012, 20:10 [#5]:
понятно, но я все равно не понимаю, как исправить программу, для правильного функционала
|
|
Мережников Андрей (статус: Абитуриент), 24 мая 2012, 20:16 [#6]:
посмотри в help про типы данных
|
|
skew (статус: Посетитель), 24 мая 2012, 20:47 [#7]:
а можно как нибудь более в крации объяснить если знаете. просто в Help слишком много всего непонятного для меня. ведь я не профессионал, а любитель
|
|
Мережников Андрей (статус: Абитуриент), 24 мая 2012, 20:53 [#8]:
у меня нет этой версии Delphi. Чтобы не оставаться вечно любителем, надо учиться читать help
|
|
skew (статус: Посетитель), 24 мая 2012, 21:14 [#9]:
а если вам дать сам файл help
|
|
Мережников Андрей (статус: Абитуриент), 24 мая 2012, 21:24 [#10]:
Цитата (skew):
а если вам дать сам файл help
а мне он зачем?
|
|
skew (статус: Посетитель), 24 мая 2012, 21:37 [#11]:
ну вы разбираетесь в этом и подскажете что использовать для реализации проекта
|
|
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™ (статус: Доктор наук), 25 мая 2012, 13:04 [#14]:
А я его и направил!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 25 мая 2012, 14:16 [#15]:
ну спасибо)) код писал не я, я взял заготовку с одного видео. поэтому сейчас не совсем понимаю, что нужно изменить. но все равно спасибо
|
|
min@y™ (статус: Доктор наук), 25 мая 2012, 14:27 [#16]:
Цитата (skew):
ну спасибо)) код писал не я, я взял заготовку с одного видео. поэтому сейчас не совсем понимаю, что нужно изменить. но все равно спасибо
Ты так до пенсии программировать собираешься? Спи###л с инета, скомпилил, не работает, вывалил на форум, ПОМОГИТЕ?
Ты, чо, издеваешься??!!11
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 25 мая 2012, 14:28 [#17]:
Да, и чо такое "в крации"? До сих пор не понимаю...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 25 мая 2012, 20:15 [#18]:
я не с инета взял, ранее на delphi 7 я это делал по примеру. тогда я начинал только изучение языка. вот теперь попробовал повторить на EX2 и не увенчался успехом исход
|
|
skew (статус: Посетитель), 26 мая 2012, 17:50 [#19]:
а в крации, я имел ввиду, что показать пример из неправильной функции в правильной форме
|
|
bugmenot (статус: 3-ий класс), 26 мая 2012, 20:08 [#20]:
в крации надо починить код взятый из инета
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|