Delphi не может получить текст от TEdit - PullRequest
7 голосов
/ 08 мая 2011

Я столкнулся с проблемой при написании кода на Delphi. А именно, я не могу получить доступ к Компонентам, даже если они объявлены, и я использовал их в коде выше (ранее в процедурах, сейчас я пытаюсь использовать их в функциях - возможно, это причина, я не знаю, Я не очень хорош в Delphi). Я сделал несколько экранов, чтобы они выглядели понятнее. Посмотри.

http://imageshack.us/photo/my-images/90/weirddelphi1.png/

http://imageshack.us/photo/my-images/837/weirddelphi2.png/

http://imageshack.us/photo/my-images/135/weirddelphi3.png/">

Как вы видите на первом экране, я получаю сообщение об ошибке компилятора. Это говорит о том, что компонент не существует, но на третьем экране вы можете видеть, что этот компонент существует. На втором экране я даже могу использовать этот компонент (завершение кода может быть успешно вызвано, но если я пытаюсь вызвать его в области видимости secondFunction, я получаю ошибку, подобную этой: «Невозможно вызвать завершение кода из-за ошибок в исходном коде» - но, черт возьми, это ошибка ?! ). Если я прокомментирую эти две строки, которые относятся к Edit7 и Edit8, я могу запустить программу без проблем. Я действительно не могу понять, что не так, если кто-нибудь из вас мог бы дать мне какой-нибудь совет, это было бы очень ценно. Я не хотел публиковать здесь весь код, потому что это заняло бы около 300 строк, однако, если вам нужно узнать что-то еще, чтобы разобраться в этом, попросите, я вам скажу ..

У меня недостаточно очков репутации, чтобы опубликовать более 2 гиперссылок, поэтому вы должны выполнить «копировать и вставить» последнюю: D

1 Ответ

6 голосов
/ 08 мая 2011

Проблема в том, что Edit7 является частью класса TForm1. Edit7 не доступно по имени за пределами TForm1. Так что либо вы можете использовать глобальную переменную Form1, и сделать

function secondFunction(x: extended): extended;
var
  paramA, paramB: extended;
begin
  paramA := StrToFloat(Form1.Edit7.Text);
  paramB := StrToFloat(Form1.Edit8.Text);

  Result := paramA + paramB * sin(x);
end;

или вы можете сделать secondFunction часть класса TForm1:

function TForm1.secondFunction(x: extended): extended;
var
  paramA, paramB: extended;
begin
  paramA := StrToFloat(Edit7.Text);
  paramB := StrToFloat(Edit8.Text);

  Result := paramA + paramB * sin(x);
end;

Но тогда вам нужно объявить secondFunction в объявлении класса TForm1, например

TForm1 = class(TForm)
private
  { Private declarations }
public
  { Public declarations }
  function secondFunction(x: extended): extended;
end;

в начале блока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...