Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> О радиокнопках, Пара вопросов о радиокнопках 
:(
    Опции темы
Georg4
Дата 15.12.2002, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: 0
Всего: 10



Делаю я прогу в ней радиокнопка должна поменять название 42 раза,  ну я беру считываю построчно из текстового файла строки , записываю в массив и элементи массива присваиваю имени кнопки.
Все хорошо, да что-то не выходит!!!!
Помогите!?:;;"**(


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Vit
  Дата 15.12.2002, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Типичная ошибка в 13й стоке программы.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Medved
Дата 15.12.2002, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Да, точно, точку с запятой забыл поставить..... :p

Ну а если серьезно..... ты сказал, что присваиваешь имени радиокнопки, а ты попробуй присваивать не имени, а свойсву Caption....


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Georg4
Дата 17.12.2002, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: 0
Всего: 10



Да я и так присваиваю Caption только нифига, пашет но при нажатии кнопки Кэпшн пропадает и самое странное когда несколько раз нажимаешь на кнопку(обычную, не радио которой я задаю эту программу) в кэпшене радиокнопки мигают строчни фаила, но только мигают на 0,1 секунды беспоряжочно вобщем бардак полный


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
dr.ZmeY
Дата 17.12.2002, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Политолог
****


Профиль
Группа: Участник Клуба
Сообщений: 3892
Регистрация: 26.3.2002
Где: ..::STALINGRAD::. .

Репутация: нет
Всего: 60



Если ты всё правильно сделал, то ошибки быть не должно... Покажи код...


--------------------
PM MAIL WWW ICQ Skype   Вверх
dr.ZmeY
Дата 17.12.2002, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Политолог
****


Профиль
Группа: Участник Клуба
Сообщений: 3892
Регистрация: 26.3.2002
Где: ..::STALINGRAD::. .

Репутация: нет
Всего: 60



Код

...
 private
   { Private declarations }
   rnd              : integer;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation
Const MeS: array [0..7] Of String = ('первый','второй',
                                  'третий','четвёртый',
                                  'пятый','шестой',
                                  'седьмой','ХВАТИТ :)');


{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
rnd:= random (3);
IF rnd= 2 then RadioButton1.Caption:=(mes[random(8)]);
end;
...


Я так понял, ты что то в этом роде хочешь? Я массив сделал, но что мешает из файла читать?


--------------------
PM MAIL WWW ICQ Skype   Вверх
Medved
Дата 18.12.2002, 02:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Модератор: если хочешь чтобы тебе помогли, приведи отрывок кода, где по твоему мнению может скрываться ошибка

В конце концов, мы же не экстрасенсы, чтобы увидеть, что ты там написал....


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Georg4
Дата 18.12.2002, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: 0
Всего: 10



Код выглядит приблизительно так

procedure TForm1.Button1Click(Sender: TObject);
var
f1:textfile;
s1:shortstring;
i:integer;
b:array[1..42]of string;
 begin
assignfile(f1,'f1.txt.');
reset(f1);
while not eof (f1) do
for i:=1 to 42 do
   Begin
 readln(f1,s1);
 b[i]:=s1;
radiobutton1.Caption:=s1;
end;
end;


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Medved
Дата 18.12.2002, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Попробуй сделать так, и посмотри, что получиться:

Код

procedure TForm1.Button1Click(Sender: TObject);
var
   f1:textfile;
   s1:shortstring;
   i:integer;
   b:array[1..42]of string;
begin
   assignfile(f1,'f1.txt.');
   reset(f1);
   while not eof (f1) do
   for i:=1 to 42 do
       begin
           readln(f1,s1);
           b[i]:=s1;
           radiobutton1.Caption:=s1;
           ShowMessage(s1);
       end;
end;


я только добавил строчку ShowMessage(s1), после твоей строки radiobutton1.Caption:=s1;




--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Vit
Дата 18.12.2002, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Если в файле что-то есть то она у тебя и меняется, только прорисовываться ты ей не даёшь, попробуй так:

Код
procedure TForm1.Button1Click(Sender: TObject);
var
 f1:textfile;
 s1:shortstring;
 i:integer;
 b:array[1..42]of string;
begin
 assignfile(f1,'f1.txt.');
 reset(f1);
 while not eof (f1) do
   for i:=1 to 42 do
     Begin
       readln(f1,s1);
       b[i]:=s1;
       radiobutton1.Caption:=s1;
       application.processmessages;
       sleep(300);
     end;
end;



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
neutrino
Дата 19.12.2002, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



А может для этой задачи использовать ТStrings? Там есть и функция считывания из файла. Ну, впрочем, можешь делать как Vit сказал, только необязательно в массив записывать эти строки. И зачем цикл в цикле? Или я чего-то не догоняю? Если тебе надо именно 42 строки считать, так применяй for, если все до конца файла, то while not eof(f1) do .......


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Vit
Дата 19.12.2002, 04:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Я не стал оптимизировать код, так как ясно что это просто кусок чего-то и многие строки просто удалены, но если это не так, то конечно же этот кон надо очень существенно переработать в плане оптимизации.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
dr.ZmeY
Дата 19.12.2002, 05:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Политолог
****


Профиль
Группа: Участник Клуба
Сообщений: 3892
Регистрация: 26.3.2002
Где: ..::STALINGRAD::. .

Репутация: нет
Всего: 60



Я одно не пойму, зачем в массив 42 раза заносить 42-ю строку??? Присвоение данных в массив через двойной цикл, оригинально однако...


--------------------
PM MAIL WWW ICQ Skype   Вверх
Medved
Дата 20.12.2002, 04:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Цитата

Я одно не пойму, зачем в массив 42 раза заносить 42-ю строку Присвоение данных в массив через двойной цикл, оригинально однако...

А ты хоть пробывал его запускать? Код то рабочий....все правильно заноситься....да вот только на экране не успевает обновляться.... (хотя код оптимизировать ох, как надо....)




--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
dr.ZmeY
Дата 20.12.2002, 06:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Политолог
****


Профиль
Группа: Участник Клуба
Сообщений: 3892
Регистрация: 26.3.2002
Где: ..::STALINGRAD::. .

Репутация: нет
Всего: 60



Ну я бы предложил бросить на форму memo, и в массив заность через него, а к радиокнопке присваивать значения уже из массива, тогда можно это делать по нажатию кнопки...
Код

procedure TForm1.Button1Click(Sender: TObject);
var
f1:System.Text; s1:shortstring;
i:integer; b:array[0..41]of string;
begin
assignfile(f1,'f1.txt');
reset(f1);
while not eof (f1) do begin
  readln(f1,s1);
  Memo1.Lines.Add(s1);
end; CloseFile(f1);
for i:=0 to 41 do begin
   b[i]:=Memo1.Lines[i];
end;

radiobutton1.Caption:=b[button1.Tag];
button1.Tag:= button1.Tag+1;
if button1.Tag>41 then button1.Tag:=0;
end;



--------------------
PM MAIL WWW ICQ Skype   Вверх
dr.ZmeY
Дата 20.12.2002, 06:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Политолог
****


Профиль
Группа: Участник Клуба
Сообщений: 3892
Регистрация: 26.3.2002
Где: ..::STALINGRAD::. .

Репутация: нет
Всего: 60



Хотя код дейсвительно корявый...


--------------------
PM MAIL WWW ICQ Skype   Вверх
Vit
Дата 20.12.2002, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(Snick_Y2K @ 19.12.2002, 13:36)
Хотя код дейсвительно корявый...

Вовсе не обязательно, если у человека было написано 200 строк кода, а он решил опубликовать только значимые для данного вопроса строки - то вот и результат, я вполне допускаю, что в оригинале между каждыми 2мя приведенными строками был десяток других и смысл тогда в таком построении мог быть вполне очевидный. Собственно не в корявости дело, код рабочий, визуальный элемент не меняет заголовок только из-за не выполнения прорисовки (сообщений формой)


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
dr.ZmeY
Дата 21.12.2002, 05:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Политолог
****


Профиль
Группа: Участник Клуба
Сообщений: 3892
Регистрация: 26.3.2002
Где: ..::STALINGRAD::. .

Репутация: нет
Всего: 60



РАБОЧИЙ КОД? Vit, ты не прав... Данные файла массиву так не присваиваются, хотя я тоже поленился и сделал это через memo, но всё равно, непонятно чего он хотел записать в массив, но явно не содержимое файла, те решения которые ты с Pegas'ом ему дали, не уверен что таковыми являются, единственное что вы сделали - это дали задержку, чтобы было видно, что капшен радиокнопки меняется, не уверен, что это то что нужно... Плюс он не закрыл файл, понимаю что это не ошибка, но всё же недочёт... Не ты не Pegas, ведать, не пробовали запускать этот код, (хотя я, честно говоря, тоже его не запускал), но код НЕРАБОЧИЙ...

Ладно, не буде превращать топик во флейм, извените....


--------------------
PM MAIL WWW ICQ Skype   Вверх
Vit
Дата 21.12.2002, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Ну если кто-то ленится, то я нет - не надо меня обвинять в ленности, я взял этот код, откомпиллировал в Delphi5 - всё абсолютно рабочее, всё присваивается, в этом коде формально, ошибок нет! Если он у тебя не работает то хочу услышать конкретное мнение почему? Помимо общей корявости я вижу только 2 существенных прокола этого кода:

1) Не отслеживается конец файла  (если файл содержит больше или меньше 42 строк, то он читать файл будет, но скорее всего не так как хотел автор) - но как я говорил - я не уверен что дополнительные операторы не были стёрты, вот я и не берусь судить правильность результата
2) нет application.processmessages - поэтому не прорисовывается заголовок RadioButton.


2Snick_Y2K: посмотри внимательно на код

По поводу мемо - это тоже очень коряво и не всегда работает:
1) зачем использовать мемо, если для этих целей достаточно TStringList
2) Если файл например 1 гигабайт то ни в мемо ни в  TStringList ты его не загрузишь, а вот построчно загрузить первые 42 строки в массив - запросто.




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
dr.ZmeY
Дата 21.12.2002, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Политолог
****


Профиль
Группа: Участник Клуба
Сообщений: 3892
Регистрация: 26.3.2002
Где: ..::STALINGRAD::. .

Репутация: нет
Всего: 60



В том то и дело, что в массив он грузит 42 раза 42-ю строку (как по твоему это может в двойном цикле нормально записаться), мемо я сам из-за лени вставил, первое что подруку подвернулось. При чем тут application.processmessages и RadioButton.Cарtion? Думаешь он хочет просто на время , чтобы посмотреть что присвоилось? Или он по событию нажатия кнопки хочет изменить капшен... Это мы можем узнать только из уст автора топика...


--------------------
PM MAIL WWW ICQ Skype   Вверх
dr.ZmeY
Дата 21.12.2002, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Политолог
****


Профиль
Группа: Участник Клуба
Сообщений: 3892
Регистрация: 26.3.2002
Где: ..::STALINGRAD::. .

Репутация: нет
Всего: 60



Вот вариант без мемо:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
f1:System.Text; s1:shortstring;
i:integer; b:array[0..30]of string;
begin
assignfile(f1,'f1.txt');
reset(f1);
i:=0;
while not eof(f1) do begin
  readln(f1,s1);
  b[i]:=s1;
  i:=i+1;
end; CloseFile(f1);
radiobutton1.Caption:=b[button1.Tag];
button1.Tag:= button1.Tag+1;
if button1.Tag>29 then button1.Tag:=0;
end;



--------------------
PM MAIL WWW ICQ Skype   Вверх
Medved
Дата 26.12.2002, 04:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



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


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Medved
Дата 26.12.2002, 07:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Цитата
РАБОЧИЙ КОД? Vit, ты не прав... Данные файла массиву так не присваиваются...Не ты не Pegas, ведать, не пробовали запускать этот код, (хотя я, честно говоря, тоже его не запускал), но код НЕРАБОЧИЙ...


Первым делом, что я сделал, прежде чем отвечать и развивать эту тематику, так это скомпилировал и запустил этот  код..... Вы Snick_Y2K меня поражаете......  Как Вы можете так уверенно говорить, что код нерабочий, даже если Вы не пробовали его запускать? Дам Вам одни совет (хотя и не люблю это делать в таких случаях), впредь не пускайтесь в дисскусии, прежде чем не удостоверитесь, что Вы правы.... В этот раз Вы просто выставили себя, не в самом лучшем, для себя свете.....




--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Medved
Дата 26.12.2002, 07:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



МОДЕРАТОР: Надеюсь больше не будем превращать тему во флейм.... топики по поводу рабочего или нерабочего кода, а так же не относящиеся к заданному вопросу, впредь будут удаляться.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0715 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.