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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2010, 10:54   #1
Radiy
Пользователь
 
Регистрация: 11.06.2010
Сообщений: 10
Восклицание ПРи присваивании теряются символы

Весьма странно, почему-то теряются символы.
Код:
procedure TForm1.GenClick(Sender: TObject);
begin
i:=1;
randomize;
for gen3:='А' to 'Я' do
begin
gen2[i]:=gen3;
i:=i+1
end;
for i:=1 to 255 do
begin
gen4[i]:=gen2[Random(33)]
end;
Kluch.Text:=gen4;
end;
ПРоверяю кол-во символов gen4 - 255 железно. Проверяю кол-во символов Kluch.Text - всегда разные значения. В чём проблема?
Вот х-ка переменных:
Код:
  i:integer;
  gen2,gen4:array[1..255] of char;
  gen3: char;
Radiy вне форума Ответить с цитированием
Старый 18.06.2010, 11:07   #2
Serj0987
Пользователь
 
Регистрация: 18.04.2009
Сообщений: 44
По умолчанию

Radiy, объект под название Kluch какого класса?
Программы на заказ Delphi, Pascal, PHP.
ICQ:636-494-826
E-mail:serj0987@yandex.ru.
Serj0987 вне форума Ответить с цитированием
Старый 18.06.2010, 11:26   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
gen4[i]:=gen2[Random(33)+1]
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.06.2010, 12:40   #4
Radiy
Пользователь
 
Регистрация: 11.06.2010
Сообщений: 10
По умолчанию

Kluch: TEdit;

Serge_Bliznykov, поправил, ничего не изменилось.

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

D6 проверил. Ничего не теряется.
Кстати вот так вот:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var  i:integer;
begin
i:=1;
randomize;
for i:=1 to 255 do
begin
gen4[i]:=chr(Random(33)+ord('А'));
end;
Edit1.Text:=gen4;
Caption:=IntToStr(length(Edit1.Text));
end;
Было бы проще.

Да еще... Так на заметку:
Если для эксперимента написать ord('а') тогда проявляется эффект описанный автором - постоянно получается разная длинна строки в Эдите. Это потому что в цикле генерируется в каком-то случае символ #0, а Эдит как и все порядочные контролы считает его концом строки, и отсекает все что за ним.
А поэтому нужно не прибавлять 1 как сказал Серж, а отнимать:
gen4[i]:=chr(Random(33)+ord('а')-1); тогда все ок, в последовательность не попадает символ с номером 256
I'm learning to live...

Последний раз редактировалось Stilet; 18.06.2010 в 13:31.
Stilet вне форума Ответить с цитированием
Старый 18.06.2010, 13:27   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Radiy
точне надо gen4[i]:=gen2[Random(32)+1];

И ещё...
1) какая IDE Delphi у Вас? Не Unicode, часом ли?
2) как проверяете? может ошибка в другом месте?
Какая длина получается в Kluch.Text ?
3) проверьте работу проекта из приложения.

Вариант Stilet безусловно красивее и точнее!
Вложения
Тип файла: rar TestKluchGen.rar (131.7 Кб, 8 просмотров)

Последний раз редактировалось Stilet; 18.06.2010 в 13:32.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.06.2010, 13:43   #7
Radiy
Пользователь
 
Регистрация: 11.06.2010
Сообщений: 10
По умолчанию

Цитата:
генерируется в каком-то случае символ #0
Когда? Я же проставил только русский алфавит в цикле.
Цитата:
точне надо gen4[i]:=gen2[Random(32)+1];
Благодарственную, всё заработало! Он же бедную "ё" в
Код:
'А' .. 'Я'
не считает.
Цитата:
1) какая IDE Delphi у Вас? Не Unicode, часом ли?
2) как проверяете? может ошибка в другом месте?
Какая длина получается в Kluch.Text ?
3) проверьте работу проекта из приложения.
1) Я полный нуб, я не знаю как это сделать
2) Записывал значение длины в другой TEdit.
В Kluch.Text раньше были абсолютно разные числа.
3) В Вашей проге пашет.
Radiy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c++ Что вылетает прога на присваивании string'у нового значения Sexy_Blond Помощь студентам 6 23.04.2010 20:28
При копировании текста из word в блокнот появляются лишние символы. paru10 Microsoft Office Word 2 11.02.2010 16:16
Теряются данные при синхронизации реплик - чего делать? batasha Microsoft Office Access 0 14.05.2009 14:34
Вирус, при печатании появляются не нужные символы. Alex91 Безопасность, Шифрование 4 06.01.2009 18:37
Ошибка при присваивании NeiL Общие вопросы Delphi 5 16.04.2008 22:24