|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
| 
			 
			#1  
			
			
			
			
		 | |||
| 
 | |||
|  Ошибка при выполнении Создаю собственную процедуру, в ней имеются строки: Poisk_In_File:=TEdit('Edit'+IntToStr(Tek_Page)+Poi sk_True[2]).Text; TEdit(FindComponent('Edit'+IntTostr(Tek)+IntToStr( z))).Text:=E_Stroka; Прикомпиляции ошибок нет, но при запуске возникает ошибки ссылающиеся на эти строки. Если внести эти строки, напрамер, в нутрь procedure TForm1.FormCreate(Sender: TObject); или procedure TForm1.Button1Click(Sender: TObject); то все нормально. Я так понял, что-то я не правильно определяю процедуру.... Подскажите плиз.... | 
| 
			 
			#2  
			
			
			
			
		 | ||||
| 
 | ||||
|   Если можешь, покажи всю процедуру. | 
| 
			 
			#3  
			
			
			
			
		 | |||
| 
 | |||
|   Код: ROCEDURE FILLING_COMBOBOX_FILE(Tek_Page: integer);
Var
 Poisk_True, Poisk_In_File, S, Iskom_Str: string;
 F: TextFile;
BEGIN
  for i:=1 to PG[Tek_Page].ComboBox_Count do
     Begin
        Poisk_True:=PG[Tek_Page].Info_ComboBox[i].Poisk;
        If Poisk_True[1]='E' then
          Begin//If
            AssignFile(F, PG[Tek_Page].Info_ComboBox[i].TextFile);
            Reset(F);
            Readln(F, S);
            Poisk_In_File:='W510';
//            Poisk_In_File:=TEdit('Edit'+IntToStr(Tek_Page)+Poisk_True[2]).Text;
              Form1.Edit1.Text:=TEdit('Edit'+IntToStr(Tek_Page)+Poisk_True[2]).Text;
               if Pos(Poisk_In_File,S)<>0 then
                   Begin
                     for j:=Length('W510') to Length(S) do
                        begin
                          If s[j]<>' ' then Iskom_Str:=Iskom_Str+s[j]
                          Else
                            begin
                              If Length(Iskom_Str)>0 then Form1.Edit1.Text:=Form1.Edit1.Text+IntToStr(8)
                              Else Iskom_Str:='';
                            end;
                        end;
                   End;
             CloseFile(F);
           End;//If
      End;
  //TComboBox('ComboBox'+IntToStr(Tek)+).Text:='';
END; | 
| 
			 
			#4  
			
			
			
			
		 | ||||
| 
 | ||||
|   А куда ты ее написал? | 
| 
			 
			#5  
			
			
			
			
		 | |||
| 
 | |||
|   После  implementation Если я правильно вопрос понял Вызывается после нажатия кнопки | 
| 
			 
			#6  
			
			
			
			
		 | ||||
| 
 | ||||
|   Не совсем понял | 
| 
			 
			#7  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
 Код:  Poisk_In_File:=TEdit('Edit'+IntToStr(Tek_Page)+Poi  sk_True[2]).Text;строкой нельзя манипулировать как Эдитом. Код:  TEdit(FindComponent('Edit'+IntTostr(Tek)+IntToStr(z))).Text:=E_Stroka; | 
| 
			 
			#8  
			
			
			
			
		 | |||
| 
 | |||
|   В общем как сделать так, чтобы при нажатии кнопки не вылазила ошибка, т.е. что-то я не правильно определяю.... На форме Edit1, остальные Edit'ы создаются динамически. Код:  
implementation
uses Unit2;
......
функции
......
PROCEDURE FILLING_COMBOBOX_FILE;
Begin
  Form1.Edit1.Text:='1'; //Работает
  TEdit('Edit'+IntToStr(1)+IntToStr(1)).Text:='1';//Компилируется, но при выполнении выдается ошибка
End;
.....
procedure TForm1.Button2Click(Sender: TObject);
begin
PROCEDURE FILLING_COMBOBOX_FILE;
end;
.... | 
| 
			 
			#9  
			
			
			
			
		 | ||||
| 
 | ||||
|   Код: implementation
uses Unit2;
......
функции
.....
procedure TForm1.Button2Click(Sender: TObject);
PROCEDURE FILLING_COMBOBOX_FILE;
Begin
  Form1.Edit1.Text:='1'; //Работает
  TEdit(FindComponent('Edit'+IntToStr(1)+IntToStr(1))).Text:='1';//Компилируется, но при выполнении выдается ошибка
End;
begin
PROCEDURE FILLING_COMBOBOX_FILE;
end;
....Последний раз редактировалось The Shadow, 01.04.2008 в 13:20. | 
| 
			 
			#10  
			
			
			
			
		 | ||||
| 
 | ||||
|   Код: TEdit('Edit'+IntToStr(1)+IntToStr(1)).Text:='1'; Код: TEdit('Edit11').Text:='1'; TEdit(var) - не ищет компонент по имени а пытается с памятью переменной работать как с TEdit | 
| 
			 
			#11  
			
			
			
			
		 | |||
| 
 | |||
|   Если сделать так, то все нормально Код: implementation
uses Unit2;
......
функции
......
procedure TForm1.Button2Click(Sender: TObject);
begin
TEdit('Edit'+IntToStr(1)+IntToStr(1)).Text:='1';//
end; | 
| 
			 
			#12  
			
			
			
			
		 | ||||
| 
 | ||||
|   Не может быть. Как ты String в TEdit переводишь? | 
| 
			 
			#13  
			
			
			
			
		 | |||
| 
 | |||
|   Ошибся, т.е. IntToStr(1); | 
| 
			 
			#14  
			
			
			
			
		 | ||||
| 
 | ||||
|   Я не про то. Надо  Код: TEdit(FindComponent('Edit'+IntToStr(1)+IntToStr(1))).Text:='1'; | 
| 
			 
			#15  
			
			
			
			
		 | |||
| 
 | |||
|   Если пишу TEdit(FindComponent('Edit'+IntToStr(1)+IntToStr(1)  )).Text:='1'; Т.е. использую FindComponent, при компиляции ошибка - [Error] Unit1.pas(116): Udeclared identifier: 'Find Component' Это происходит когда этот код находится в моей процедуре, а если в "стандартных", типа procedure TForm1.FormCreate(Sender: TObject); или procedure TForm1.Button2Click(Sender: TObject); то все нормально работает... |