Может показаться, что вы пытаетесь использовать глобальные переменные или переменные-члены во всем коде, где должны использоваться локальные переменные.Не делай этого.Это плохая практика, которая принесет вам огромное количество боли в будущем.Избавьтесь от этой дурной привычки, прежде чем неправильно писать слишком много кода.
Всегда используйте локальные переменные там, где это возможно.
procedure Show;
var
email: string;
password: string;
MD5: TMD5;
begin
email := Form1.ed_Email.Text;
password := Form1.Ed_typedpass.Text;
MD5 := GetMD5;
MD5.Init;
MD5.Update(TByteDynArray(RawByteString(password)), Length(password));
password := LowerCase(MD5.AsString);
end;
Я должен был угадать тип MD5
но вы можете заменить это фактическим типом.
Если вам нужно использовать члены, то либо передать их методу в качестве параметра, либо сделать процедуру методом класса формы, которому принадлежат члены.
Кажется вероятным, что эти переменные являются членами TForm2
, и если вам действительно нужно, чтобы они были членами TForm2
, то вам, вероятно, следует использовать Show
метод TForm2
.Тем не менее, Show
является неправильным выбором имени, поскольку это уже метод TForm
.
Я также догадался о типе для password
, но, возможно, оно должно быть AnsiString
судя по приведению типов, которое происходит в вызове MD5.Update
.Или, возможно, Length
должно быть ByteLength
.Другими словами, я подозреваю, что у вас есть ошибка в строке MD5.Update
, которая обнаружится, как только вы получите код для компиляции.