这个单元怎么了?(100分)

  • 主题发起人 主题发起人 JUMP1972
  • 开始时间 开始时间
J

JUMP1972

Unregistered / Unconfirmed
GUEST, unregistred user!
我声明了一个单元文件如下(保存当前登录用户的信息,以备别处使用):
unit U_common;

interface

uses
Classes;

type
TU_Common=class(TObject)
private
FCur_OptNum,FCur_OptName:String;
procedure SetCur_OptNum(aOptNum:String);
procedure SetCur_OptName(aOptName:String);
public
// constructor Create;
published
property Cur_OptNum:String read FCur_OptNum write SetCur_OptNum;
property Cur_OptName:String read FCur_OptName write SetCur_OptName;
end;

var
Common:TU_Common;

implementation

{constructor TU_Common.Create;
begin
inherited Create;
FCur_OptNum:=#0;
FCur_OptName:=#0;
end;}

procedure TU_Common.SetCur_OptNum(aOptNum:String);
begin
FCur_OptNum:=aOptNum;
end;

procedure TU_Common.SetCur_OptName(aOptName:String);
begin
FCur_OptName:=aOptName;
end;

end.

我在别的单元中如下调用的:
Common.Cur_OptNum:=CmbBoxNum.Text;
Common.Cur_OptName:=EdtName.Text;
但每次运行总是出错!
 
U_common.Common.Cur_OptNum:=CmbBoxNum.Text;
U_common.Common.Cur_OptName:=EdtName.Text;

在其它单元中uses U_common
 
constructor TU_Common.Create;
begin
inherited Create;
FCur_OptNum:= '';
FCur_OptName:= '';
end;
我一直这样用,从不出错
 
我已经uses了,错误提示为:格式无效或与自变量不相容
 
你是不是没有Create就用呀
 
如果我Create,也提示相同的错误信息!
 
你的CmbBoxNum 和 EdtName 是什么?是组合框和编辑框吗?

直接这样用还不行吗?
U_common.Common.Cur_OptNum:='ABC';
U_common.Common.Cur_OptName:='ABCDEF';
 
to jsxjd:直接那样用也不行!
 
我的uses中只有classes,是这的问题吗?
 
constructor段的声明和定义为什么要取消掉呢? // { }
 
你不能把单元和调用部分贴上来看看, 包括你Create他的地方
 
To xuxincheng:如果我使用了constructor create;也会出错!
如果我不使用的话,在别的单元中调用时,程序会不会自动创建一个common的实例呢?
 
to tseug:请看最上面,我的最后两行即为调用的地方,如果我将create放在这两句的前边,
则create出错,若不放create,则直接赋值时出错,出错信息均为:
“%s 格式无效或与自变量不相容”
 
你不创建怎么会有它的实例!
这样用看看
if not Assigned(Common) then Common := TU_Common.Create;
Common.Cur_OptNum:=CmbBoxNum.Text;
Common.Cur_OptName:=EdtName.Text;
 
分不够,我可以再加!另:如何在程序中实现关闭win2000呢?在Win98下使用
ExitWindowsEx(EWX_SHUTDOWN,0);
但在win2000下不起作用!
 
没试过, 你看看吧....
procedure reboot_computer;
var
hToken:THandle;
tkp : TOKEN_PRIVILEGES;
ReturnLength : DWord;
begin

if (not OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_ALL_ACCESS or TOKEN_QUERY, hToken))then
begin
application.Terminate;
end;
LookupPrivilegeValue(nil,’SeShutdownPrivilege’,tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes :=SE_PRIVILEGE_ENABLED;
ReturnLength :=0;
AdjustTokenPrivileges(hToken, FALSE, tkp, 0,nil,ReturnLength);
if (GetLastError() <> ERROR_SUCCESS) then
begin
application.Terminate;
end;

if (not ExitWindowsEx(EWX_SHUTDOWN, 0)) then
begin
application.Terminate;
end;
end;

 
谢谢tseug!!你的办法通过了!
等一会儿再给你加分可以吗?等我的第二个问题解决掉一块
加分!
 
[:(]我怎么给贴子继续加分??
 
如何继续给贴子加分?
 
后退
顶部