请问高手,俺有一段串口程序,在implementation uses {$R *.dfm}后定义的,在form1里可以调用函数SendData,在别的form里就不能调用了,请问如何解决,焦急等待中...?function Hex(c: char): Integer;
var
x: Integer;
begin
if (Ord(c) >= Ord('0')) and (Ord(c) <= Ord('9')) then
x:= Ord(c) - Ord('0')
else if (Ord(c) >= Ord('a')) and (Ord(c) <= Ord('f')) then
x:= Ord(c) - Ord('a') + 10
else if (Ord(c) >= Ord('A')) and (Ord(c) <= Ord('F')) then
x:= Ord(c) - Ord('A') + 10
else
x:= -1; //输入错误
Result:= x;
end;//*******************************************************************
//该函数接收1~2个,字符转换成功后输出对应16进制数的值,否则输出-1
//*******************************************************************
function HexToInt(Str: string): Integer;
var
tmpInt1, tmpInt2: Integer;
begin
if Length(Str) = 1 then
begin
Result:= Hex(Str[1]);
end
else if Length(Str) = 2 then
begin
tmpInt1:= Hex(Str[1]);
tmpInt2:= Hex(Str[2]);
if (tmpInt1 = -1) or (tmpInt2 = -1) then
Result:= -1
else
Result:= tmpInt1 * 16 + tmpInt2;
end
else
Result:= -1; //输入错误,转换失败
end;//***********************
//该函数发送数据
//***********************
function SendData(v: string): string;
var
Len: Integer;
i, Count, MaxCount, tmpInt: Integer;
tmpvar: Variant;
tmpStr, Output: string;
begin
Len:= 0;
Count:= 1;
MaxCount:= 1;
//发送二进制数,需要使用Variant变量矩阵,矩阵大小自动调节
if HexSend then
begin
Output:=v;
Len:= Length(Output);
if Len > 0 then
begin
i:= 1;
//创建一个Variant数组
tmpvar:= VarArrayCreate([1, 1], varByte);
while (i < Len) do
begin
//转换为16进制
tmpStr:= Copy(Output, i, 2);
tmpStr:= LowerCase(tmpStr);
tmpInt:= HexToInt(tmpStr);
if tmpInt = -1 then
begin
ShowMessage('发送的数据格式有问题!');
Exit;
end
else
begin
if Count = (MaxCount+1) then
begin
Inc(MaxCount); //增大Variant数组
VarArrayRedim(tmpvar, MaxCount); //Resizes a Variant Array
end;
tmpvar[Count]:= tmpInt;
Inc(Count);
end;
i:= i + 2;
end;
// MSComm.Output:= tmpvar;
Result:=tmpvar;
end
end
else
Result:=v;
end;
var
x: Integer;
begin
if (Ord(c) >= Ord('0')) and (Ord(c) <= Ord('9')) then
x:= Ord(c) - Ord('0')
else if (Ord(c) >= Ord('a')) and (Ord(c) <= Ord('f')) then
x:= Ord(c) - Ord('a') + 10
else if (Ord(c) >= Ord('A')) and (Ord(c) <= Ord('F')) then
x:= Ord(c) - Ord('A') + 10
else
x:= -1; //输入错误
Result:= x;
end;//*******************************************************************
//该函数接收1~2个,字符转换成功后输出对应16进制数的值,否则输出-1
//*******************************************************************
function HexToInt(Str: string): Integer;
var
tmpInt1, tmpInt2: Integer;
begin
if Length(Str) = 1 then
begin
Result:= Hex(Str[1]);
end
else if Length(Str) = 2 then
begin
tmpInt1:= Hex(Str[1]);
tmpInt2:= Hex(Str[2]);
if (tmpInt1 = -1) or (tmpInt2 = -1) then
Result:= -1
else
Result:= tmpInt1 * 16 + tmpInt2;
end
else
Result:= -1; //输入错误,转换失败
end;//***********************
//该函数发送数据
//***********************
function SendData(v: string): string;
var
Len: Integer;
i, Count, MaxCount, tmpInt: Integer;
tmpvar: Variant;
tmpStr, Output: string;
begin
Len:= 0;
Count:= 1;
MaxCount:= 1;
//发送二进制数,需要使用Variant变量矩阵,矩阵大小自动调节
if HexSend then
begin
Output:=v;
Len:= Length(Output);
if Len > 0 then
begin
i:= 1;
//创建一个Variant数组
tmpvar:= VarArrayCreate([1, 1], varByte);
while (i < Len) do
begin
//转换为16进制
tmpStr:= Copy(Output, i, 2);
tmpStr:= LowerCase(tmpStr);
tmpInt:= HexToInt(tmpStr);
if tmpInt = -1 then
begin
ShowMessage('发送的数据格式有问题!');
Exit;
end
else
begin
if Count = (MaxCount+1) then
begin
Inc(MaxCount); //增大Variant数组
VarArrayRedim(tmpvar, MaxCount); //Resizes a Variant Array
end;
tmpvar[Count]:= tmpInt;
Inc(Count);
end;
i:= i + 2;
end;
// MSComm.Output:= tmpvar;
Result:=tmpvar;
end
end
else
Result:=v;
end;
implementation 前面先声明。
var
Len: Integer;
i, Count, MaxCount, tmpInt: Integer;
tmpvar: Variant;
tmpStr, Output: string;
begin
Len:= 0;
Count:= 1;
...............
Undeclared identifier: 'senddata'
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; // 在這裏聲明下
function Hex(c: char): Integer;
function HexToInt(Str: string): Integer;
function SendData(v: string): string;
var
Form1: TForm1;implementation{$R *.dfm}function Hex(c: char): Integer;
var
x: Integer;
begin
if (Ord(c) >= Ord('0')) and (Ord(c) <= Ord('9')) then
x:= Ord(c) - Ord('0')
else if (Ord(c) >= Ord('a')) and (Ord(c) <= Ord('f')) then
x:= Ord(c) - Ord('a') + 10
else if (Ord(c) >= Ord('A')) and (Ord(c) <= Ord('F')) then
x:= Ord(c) - Ord('A') + 10
else
x:= -1; //输入错误
Result:= x;
end;//*******************************************************************
//该函数接收1~2个,字符转换成功后输出对应16进制数的值,否则输出-1
//*******************************************************************
function HexToInt(Str: string): Integer;
var
tmpInt1, tmpInt2: Integer;
begin
if Length(Str) = 1 then
begin
Result:= Hex(Str[1]);
end
else if Length(Str) = 2 then
begin
tmpInt1:= Hex(Str[1]);
tmpInt2:= Hex(Str[2]);
if (tmpInt1 = -1) or (tmpInt2 = -1) then
Result:= -1
else
Result:= tmpInt1 * 16 + tmpInt2;
end
else
Result:= -1; //输入错误,转换失败
end;//***********************
//该函数发送数据
//***********************
function SendData(v: string): string;
var
Len: Integer;
i, Count, MaxCount, tmpInt: Integer;
tmpvar: Variant;
tmpStr, Output: string;
begin
Len:= 0;
Count:= 1;
MaxCount:= 1;
//发送二进制数,需要使用Variant变量矩阵,矩阵大小自动调节
if HexSend then
begin
Output:=v;
Len:= Length(Output);
if Len > 0 then
begin
i:= 1;
//创建一个Variant数组
tmpvar:= VarArrayCreate([1, 1], varByte);
while (i < Len) do
begin
//转换为16进制
tmpStr:= Copy(Output, i, 2);
tmpStr:= LowerCase(tmpStr);
tmpInt:= HexToInt(tmpStr);
if tmpInt = -1 then
begin
ShowMessage('发送的数据格式有问题!');
Exit;
end
else
begin
if Count = (MaxCount+1) then
begin
Inc(MaxCount); //增大Variant数组
VarArrayRedim(tmpvar, MaxCount); //Resizes a Variant Array
end;
tmpvar[Count]:= tmpInt;
Inc(Count);
end;
i:= i + 2;
end;
// MSComm.Output:= tmpvar;
Result:=tmpvar;
end
end
else
Result:=v;
end;procedure TForm1.FormCreate(Sender: TObject);
beginend;end.
的单元名