delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks

#

fastreport3.07如何进入脚本编辑. Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207204741231.html
fastreport3.07如何进入脚本编辑.

up

up

up

posted @ 2009-02-11 16:49 delphi2007 阅读(369) | 评论 (0)编辑 收藏

帮我想个好点的方法 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207195110232.html
我用SQL   server建了张表,实现注册功能.表有username(char),password(char),rights(bit)三列,分别表示用户名,密码,和权限(普通用户\管理员)我该怎么实现注册功能?帮我想个具体的做法...我用添加老是出错...
posted @ 2009-02-11 16:49 delphi2007 阅读(238) | 评论 (0)编辑 收藏

如何在delphi 7 编程环境下,打开一个 XC_PK_XCPRN.bpl 包? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207180750233.html
如何在delphi   7   编程环境下,打开一个   XC_PK_XCPRN.bpl     包?  
   
  我使用   file   ->   open   ->       在OPEN窗口中,选    
  目录:                     D:\电算编程资料\delphi\品名录入窗口项目  
  文件类型:             any   file(*.*)  
                              文件名:                 XC_PK_XCPRN.bpl  
   
    出现报错窗口:     unable   to   find   package   source   D:\电算编程资料\delphi\品名录入窗口项目\  
  XC_PK_XCPRN.bpl     or   compiled   package   D:\电算编程资料\delphi\品名录入窗口项目\   XC_PK_XCPRN.bpl   .  
   
  奇怪,明明在   D:\电算编程资料\delphi\品名录入窗口项目\           下有这个文件,XC_PK_XCPRN.bpl             呀     !  
   
 

.bpl好像跟dcu相似吧。打不开的,想打开dcu就得找到pas文件,想打开bpl包就得找到dpk  
   
  好像是这样的.

posted @ 2009-02-11 16:49 delphi2007 阅读(344) | 评论 (0)编辑 收藏

fastreport3.07如何...... Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207180235234.html
fastreport3.07如何进入脚本编辑.

up

up

up

posted @ 2009-02-11 16:49 delphi2007 阅读(317) | 评论 (0)编辑 收藏

动态连接库调用 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207154439235.html
Delphi里动态连接库调用声明:(Delphi是正确)      
      function   Coding(input:string):pchar;  
      stdcall;far;external   'convertdll.dll'name   'Coding';  
      function   Decode(input:string):pchar;  
      stdcall;far;external   'convertdll.dll'name   'Decode';;      
     
  我翻译成C#    
  [DllImport("convertdll.dll",     EntryPoint     =     "Coding",     CallingConvention     =     CallingConvention.StdCall)]      
                                public     static         extern     string     Coding(string     input);      
     
                                [DllImport("convertdll.dll",     EntryPoint     =     "Decode",     CallingConvention     =     CallingConvention.StdCall)]      
                                 
                                public     static     extern     String     Decode(String     input);    
   
  传入同样的值   ,Delphi中   Decode()得到正确的值,C#得到0000为什么?大伙帮忙看看,谢谢  
 

string

我改成下面的形式后:      
  [DllImport("ConvertDll.dll",   EntryPoint   =   "Decode",  
                  CharSet   =   CharSet.Ansi,   CallingConvention   =   CallingConvention.StdCall)]  
                  public   static   extern   string   Decode([MarshalAs(UnmanagedType.AnsiBStr)]string   input);  
  单步执行是正确,直接运行出现外部组件发生异常。不知道为什么?  
 

posted @ 2009-02-11 16:49 delphi2007 阅读(358) | 评论 (0)编辑 收藏

查询语句的问题 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207154244236.html
s1:='select   username   from   userload   where   username='+''''+edit1.Text+'''';  
    datamodule2.Query3.SQL.Add(s1);  
    datamodule2.Query3.Open;  
   
  如果我想实现S1的结果再加个rights=1的条件该怎么写?

s1:='select   username   from   userload   where   rights=1   and   username='+''''+edit1.Text+'''';  
 

s1:='select   username   from   userload   where   username='''+edit1.Text+'''   and   rights=1';?

很奇怪哦.那如果rights同样也是一个从外界如edit2获取的值该怎样加呢!?

to   risman,这个法不对~

if   rights=1   then  
  begin  
    s1:='select   username   from   userload   where   username='+''''+edit1.Text+'''';  
    datamodule2.Query3.SQL.Add(s1);  
    datamodule2.Query3.Open;  
  end;

s1:='select   username   from   userload   where   username='+quotedstr(edit1.text)+'   and   rights='+   edit2.text;//如果rights是文本值(字串),那么,把edit2.text换成quotedstr(edit2.text)

上面是针对你继续问的“那如果rights同样也是一个从外界如edit2获取的值该怎样加呢!?”的回答

posted @ 2009-02-11 16:49 delphi2007 阅读(235) | 评论 (0)编辑 收藏

请问:填空(高分^_^) Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207153123237.html
实验中有一段组织查询条件的过程(窗口中有ckbM,   ckbF作为男女选择的)  
  procedure   TfmAA.Condition();  
  var  
      sNo1,   sNo2:   string;//学号,范围  
        sNocondit:string;//查询条件的‘学号’部分  
        s:string;     //查询条件的'性别'部分  
  begin  
        sNo1:=Trim(edtNo1.Text);  
        sNo2:=Trim(edtNo2.text);  
      if   StrToInt(sNo1)>StrToInt(sNo2)   then  
        begin  
            sNo1:=Trim(edtNo2.Text);  
            sNo2:=Trim(edtNo1.Text);  
        end;  
      sNoCondit:=_______________;                                       //(1)  
      if   _____________________   then//男女都选             //(2)  
          s:=''  
      else  
          begin  
                if   ckbM   Checked   then     //只选男  
                    s:='   AND   Sex   =   ''M''';  
                  else  
                    s:='   AND   Sex=''F''';  
          end;  
    if   _____________   then       //男女都不是                       //(3)  
        s:=   '   AND   (Sex=   ''''   OR   Sex   =   ''   '')';  
      sCondit:=sNoCondit   +   s;  
  end;  
   
   
  请问上面的三个空是怎么填的呀  
 

如果学号字段为No  
  1   '(No>='+   sNo1+   '   AND   No<='+   sNo2+   ')';  
  2   ckbM.Checked   and   ckbF.Checked  
  3   (not   ckbM.Checked)   and   (not   ckbF.Checked)

楼上正解

是不是你们要考试了的题目啊?

posted @ 2009-02-11 16:49 delphi2007 阅读(254) | 评论 (0)编辑 收藏

添加数据记录成功后,如何自动显示该条记录于DBGrid中? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207152521238.html
添加数据记录成功后,如何自动显示该条记录于DBGrid中?

table.refresh?

我用的是ADOQuery控件

close;  
  open;

你用DBGrid关联DataSource        
  DataSource关联ADOQuery        
  保存后     直接refresh     就可以  
   
  如果用SQL保存的话        
  ADOQuery.close;  
  ADOQuery   .open;就行

强烈鄙视问题解决后不结贴的人!  
  强烈鄙视技术问题解决后把贴子转移到非技术区的人!  
  鄙视你们!  
   
  http://community.csdn.net/Expert/topic/5216/5216675.xml?temp=.9262659

posted @ 2009-02-11 16:49 delphi2007 阅读(573) | 评论 (0)编辑 收藏

关于添加操作的问题 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207145915239.html
userload表,其各列分别为ID(自增标志),username,password,rights.其中username,password,rights分别为用户名,密码,用户类型.我想实现注册用户功能,那我的想法是同添加的做法.在前台我只对用户名\密码\用户类型   赋值。运行说要给ID赋值。可是自增需要外界给值的么?该怎么解决?

最简单的办法,把自增列删掉

不能删掉啊~~有什么好办法啊!?

posted @ 2009-02-11 16:49 delphi2007 阅读(246) | 评论 (0)编辑 收藏

菜鸟菜问,急 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207143512240.html
先查询,再对查询出来的内容进行修改,这如何进行?请各位高手帮帮忙  
 

有很多很多办法.

可不可以跟我说一个办法啊

看你要在什么控件下改了  
  先select显示出来  
  然后再update  
  给个edit的例子:  
  adoquery1.sql.add('update   表名   set   列名=(:N)');  
  adoquery1.Parameters.ParamByName('N').Value:=edit1.Text;

先谢谢楼上的大侠,然后“列名=(:N)“这个什么意思?怎么用?

直接用,N是随便定义的!~

强烈鄙视问题解决后不结贴的人!  
  强烈鄙视技术问题解决后把贴子转移到非技术区的人!  
  鄙视你们!  
   
  http://community.csdn.net/Expert/topic/5216/5216675.xml?temp=.9262659

posted @ 2009-02-11 16:49 delphi2007 阅读(279) | 评论 (0)编辑 收藏

再问一个:填空, Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207141240241.html
实验中有一段组织查询条件的过程(窗口中有ckbM,   ckbF作为男女选择的)  
  procedure   TfmAA.Condition();  
  var  
      sNo1,   sNo2:   string;//学号,范围  
        sNocondit:string;//查询条件的‘学号’部分  
        s:string;     //查询条件的'性别'部分  
  begin  
        sNo1:=Trim(edtNo1.Text);  
        sNo2:=Trim(edtNo2.text);  
      if   StrToInt(sNo1)>StrToInt(sNo2)   then  
        begin  
            sNo1:=Trim(edtNo2.Text);  
            sNo2:=Trim(edtNo1.Text);  
        end;  
      sNoCondit:=_______________;                                       //(1)  
      if   _____________________   then//男女都选             //(2)  
          s:=''  
      else  
          begin  
                if   ckbM   Checked   then     //只选男  
                    s:='   AND   Sex   =   ''M''';  
                  else  
                    s:='   AND   Sex=''F''';  
          end;  
    if   _____________   then       //男女都不是                       //(3)  
        s:=   '   AND   (Sex=   ''''   OR   Sex   =   ''   '')';  
      sCondit:=sNoCondit   +   s;  
  end;  
   
   
  请问上面的三个空是怎么填的呀

分太少  
  不答了

啊,我晕,你不早说,你答了再说吧,我会给很多的呀  
 

我不能没有你的帮助呀

posted @ 2009-02-11 16:49 delphi2007 阅读(249) | 评论 (0)编辑 收藏

自增标识的相关问题 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207141109242.html
我做了张注册表,设有ID为标识,每次自增.在注册的时候,我需要填写密码和用户名,运行是提示必须给"ID"赋值...那我该怎样解决这个问题...谢谢指教

代码如下:  
  begin  
          userload.Append;  
          userload.Fields[3].AsInteger:=right;  
          userload.Fields[1].AsString:=edit1.Text;  
              if(edit2.Text=edit3.Text)then  
              begin  
              userload.Fields[2].AsString:=edit3.Text;  
              end  
              else  
              begin  
                Application.MessageBox('密码输入不一致,请重新输入!','未发现记录',MB_OK);  
                edit2.Text:='';  
                edit3.Text:='';  
                end;  
          userload.Post;  
          userload.Refresh;  
   
  表内userload.Fields[0]即是ID

帮忙看看...

请问大家...我表内设置的自增标识,该怎么处理啊!?添加时给它赋值,提示说不能加显示值.不做操作说ID必须有个值?该怎么办呢?

这个值应该是系统自动添加的吧.怎么会要你来操作??

posted @ 2009-02-11 16:49 delphi2007 阅读(210) | 评论 (0)编辑 收藏

请问:这里的空应怎么填呀? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207135159243.html
某程序中有个comboBox组件cmbAA,在fmXX选中后,cmbAA的项数来自于edt00,各项的内容依次是整数10,11,12.......  
  TfmXX._______(Sender:Object)//(1)  
  ____________________________//(2)  
  begin  
        n:=_________________           //(3)  
        cmbAA.Clear;  
        for   i:=0   to   n-1   do  
          cmbAA.Items.Add(________________);//(4)  
        if   cmbAA.ItemCount   >=   3   then  
          cmbAA.ItemIndex:=3      
        else  
          cmbAA.ItemIndex:=0;  
  请问,这上面的4个应填什么呀

fmXX、edt00都是什么东西

我想fmXX是窗口指针,edt00是上面的一个编辑框吧

TfmXX.FormCreate(Sender:Object);  
  var   i,n   :   Integer;  
  begin  
    n:=strtoint(edt00.text;)  
      ...  
        cmbAA.Items.Add(这里不会);  
      ...  
  end;  
   
  特别说明:if   cmbAA.ItemCount   >=   3   then有错  
  应该是   if   cmbAA.Item.Count   >=   3   then

cmbAA.Items.Add(inttostr(i));

多谢呀

posted @ 2009-02-11 16:49 delphi2007 阅读(162) | 评论 (0)编辑 收藏

请问,关闭子窗口提示错误,大家遇到这样的问题吗? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207133720244.html
关闭子窗口时总是提示下面的错误:  
  Access   violation   at   address   00000008.   Read   of   address   00000008  
   
  Project   Project1.exe   raised   exception   class   EInvalidPointer   with   message'Invalid    
  pointer   operation'.   Process   stopped   .Use   Step   or   Run   to   contine.  
   
  我在窗口Close事件中加了:Action   :=   caFree;还是提示这样的错误!  
 

看看对象是不是都释放了,提示有无效的指针

同意楼上的

就有两个全局变理,我都释放了!应该就可以了吧?

在对象释放时,补上一句Form1:=nil;把你的Form或其它对象也这样处理

onclose:  
  Action   :=   caFree;  
  form1:=nil;

支持楼上的~

有没有使用第三方控件?

posted @ 2009-02-11 16:49 delphi2007 阅读(433) | 评论 (0)编辑 收藏

请问:这句话的功能是什么呀? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207130246245.html
某程序中有如下的对窗口fmXX的操作  
  if   not   Assigned(fmXX)   then  
      fmXX   :=   TfmXX.Create(self)//(1)请问这句话的功能是什么呀?  
   
  else  
      Exit;  
  fmXX.Show;  
   
  _____________________;//(2)这里要求释放占用的资源,这里添什么呢?  
  fmXX:=null;  
   
     
 

某程序中有如下的对窗口fmXX的操作  
  if   not   Assigned(fmXX)   then  
      fmXX   :=   TfmXX.Create(self)//(1)请问这句话的功能是什么呀?  
   
  答:这是创建一个类的实例.  
      fmxx:类变量.  
      tfrmxx.create(self);这是类的构造方法.参数为当前实例的拥有者.拥有者负责管理当前实例的内存空间.  
   
  else  
      Exit;  
  fmXX.Show;  
   
  fmxx.free;//(2)这里要求释放占用的资源,这里添什么呢?  
  fmXX:=null;  
 

谢谢

posted @ 2009-02-11 16:49 delphi2007 阅读(131) | 评论 (0)编辑 收藏

!!!!高分求教ReadProcessMemory读取内存.有关内存偏移量的问题! Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207125413246.html
已知一基地址$010EA0CC,偏移量为$2A4,先在用ReadProcessMemory函数连读取内存数据,为什么我用其他工具(例如:CE)可以读取到正常的数据,但  
  ReadProcessMemory(h,Pointer(addr+$2A4),@buf,nSize,lpNumberOfBytes);  
  却为0?是不是$010EA0CC是一个指针地址.请大家赐教  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var   gameHwnd:Hwnd;  
          pid:   dword;  
          h:   THandle;  
          lpNumberOfBytes:   DWord;  
          buf:DWord;  
          buf2:Pointer;  
          Buffer   :   Array[0..3]   Of   DWord;  
          addr:DWORD;  
          nSize:   DWORD;  
          s:WideString;  
          i:Integer;  
  begin  
      gameHwnd:=FindWindow(nil,'Element   Client');  
      if   gameHwnd<>0   then  
          begin  
              GetWindowThreadProcessId(gameHwnd,   @pid);  
              h:=OpenProcess(PROCESS_ALL_ACCESS,   false,   pid);  
              if   h<>0   then  
                  begin  
                      addr:=$010EA0CC;  
                      edit2.Text:=Inttostr(gameHwnd);  
                      edit3.Text:=Inttostr(h);  
                      nSize:=4;  
                      ReadProcessMemory(h,Pointer(addr+$2A4),@buf,nSize,lpNumberOfBytes);  
                      s:=inttoStr(buf);  
                      edit1.Text:=s;  
                      showmessage(s);  
                  end;  
              closeHandle(h);  
          end   else   begin  
              showmessage('游戏未运行!');  
          end;  
  end;  
 

Return   Values  
   
  If   the   function   succeeds,   the   return   value   is   nonzero.  
  If   the   function   fails,   the   return   value   is   zero.   To   get   extended   error   information,   call   GetLastError.  
  The   function   fails   if   the   requested   read   operation   crosses   into   an   area   of   the   process   that   is   inaccessible.    
   
  看帮助   第一句话   函数成功的时候   这个值是非0    
   
   
   
 

楼上的。不是这个意思.或许是我描述能力太差了。  
   
  不过已经解决了。多谢啊.  
   
  放分。

噢   呵呵   是参数的问题还是?

不是。具体我也不太懂.我是在网上找到的一个函数搞定的,你看看能看懂不?讲一讲.我对内存这些东西是刚接触.很菜.  
  ===========================================  
  addr:=GetAddyfrmpointer($010EA0CC,$2A4,h);  
  ===========================================  
   
  function   GetAddyfrmpointer(baseaddress,   offset:   dword;  
      hID:   THandle):   Dword;  
  var   a:   dword;  
          x:   dword;  
          i:   integer;  
          offsetcount:   integer;  
          offsets:array   of   dword;  
          b:integer;  
          maxid:integer;  
  begin  
      offsetcount:=1;  
      b:=0;  
      setlength(offsets,1);  
      offsets[b]:=offset;  
      a:=baseaddress;  
      i:=0;  
      while   (i<offsetcount)   do  
      begin  
          if   not   readprocessmemory(hID,pointer(a),@a,4,x)   then   exit;  
          inc(a,offsets[i]);  
          inc(i);  
          result:=a  
      end;  
  end;  
 

看来基地址+偏移量直接取的办法是不对.

posted @ 2009-02-11 16:49 delphi2007 阅读(1467) | 评论 (0)编辑 收藏

怎么让弹出的窗体Form显示在屏幕的某一个坐标位置 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207103348247.html
怎么让弹出的窗体Form显示在屏幕的某一个坐标位置  
  例如:  
        Form.show;      
        ................  
        ......................  
   
 

有Postion属性   可以让窗体显示在中间的     具体的自己设置看看    
   
 

设置Left/top属性

设置form.left,from.top

在设计时,将窗体拖放到你要显示的位置,查看此时窗体的属性窗口中的:left     Height     top    
  width   记住他们的值,然后再显示窗体之前将记下的这些值赋值给他们,即可.

强烈鄙视问题解决后不结贴的人!  
  强烈鄙视技术问题解决后把贴子转移到非技术区的人!  
  鄙视你们!  
   
  http://community.csdn.net/Expert/topic/5216/5216675.xml?temp=.9262659

谢谢各位  
    本人不是不结帖!  
    是没时间来看!  
  结了

posted @ 2009-02-11 16:49 delphi2007 阅读(1434) | 评论 (0)编辑 收藏

请问如何强行释放所有已关闭的程序所残留的内存等资源?类似于微软的那个叫mem.exe的工具,如何入手呢? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207081040248.html
有的程序设计的不完美或者说是操作系统配合的不完美,在程序已关闭后有的资源不能很好的让操作系统回收,看到有很多工具软件可以回收内存等功能,这是如何做的呢?现在我就是希望打开很多软件并工作了很长时间后,将这些应用软件关闭,然后能设计一个东东让系统恢复到刚启动机器的状态,能做到呢?

给你个思路,先找到现正在运行的程序所使用的内存范围,没在这个范围内的通通清空它。  
   
  至于具体代码我不知道。

自顶一下,有没有列好的答案呢?

posted @ 2009-02-11 16:49 delphi2007 阅读(227) | 评论 (0)编辑 收藏

请教各位仁兄:如何取得本机所有硬盘的所有罗辑盘符? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061207001552249.html
如题多谢。

unit   Unit1;  
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
      Dialogs,   StdCtrls;  
   
  type  
      TForm1   =   class(TForm)  
          btn1:   TButton;  
          procedure   btn1Click(Sender:   TObject);  
          procedure   FormCreate(Sender:   TObject);  
          procedure   FormDestroy(Sender:   TObject);  
      private  
          {   Private   declarations   }  
          nmg_tsTemp:   TStringList;  
          function   DriveAvail:   Boolean;  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      Form1:   TForm1;  
   
  implementation  
   
  {$R   *.dfm}  
   
  function   TForm1.DriveAvail:Boolean;  
  var  
      r   :   LongWord;  
      Drives:   array[0..128]   of   Char;  
      pDrive:   PChar;  
  begin  
      Result:=False;  
      ZeroMemory(@Drives,   SizeOf(Drives));  
      r   :=   GetLogicalDriveStrings(SizeOf(Drives),   Drives);  
      if   r   =   0   then   Exit;  
      if   r   >   SizeOf(Drives)   then  
      begin  
          raise   Exception.Create(SysErrorMessage(ERROR_OUTOFMEMORY));  
      end;  
      pDrive   :=   Drives;  
      while   pDrive^   <>   #0   do  
      begin  
          if   GetDriveType(pDrive)   =   DRIVE_FIXED   then  
          begin  
              nmg_tsTemp.Add(StrPas(pDrive));  
          end;  
          inc(pDrive,   4);  
      end;  
      Result   :=   True;  
  end;  
   
  procedure   TForm1.btn1Click(Sender:   TObject);  
  var  
      I:   Integer;  
  begin  
      DriveAvail;  
      for   I   :=   nmg_tsTemp.Count   -   1   downto   0   do  
          ShowMessage(nmg_tsTemp.Strings[i]);  
  end;  
   
  procedure   TForm1.FormCreate(Sender:   TObject);  
  begin  
      nmg_tsTemp   :=   TStringList.Create;  
  end;  
   
  procedure   TForm1.FormDestroy(Sender:   TObject);  
  begin  
      nmg_tsTemp.Free;  
  end;  
   
  end.

5分,楼主没"人性",呵呵,

posted @ 2009-02-11 16:49 delphi2007 阅读(235) | 评论 (0)编辑 收藏

我要实现十进制数转换为2进制数保存到个数组里 请看我写的对不对 谢谢 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061206215537250.html
unit     Unit1;      
     
  interface      
     
  uses      
        Windows,     Messages,     SysUtils,     Variants,     Classes,     Graphics,     Controls,     Forms,      
        Dialogs,     StdCtrls,     Mask;      
     
  type      
        TForm1     =     class(TForm)      
                MaskEdit1:     TMaskEdit;//从这里输入数字      
                Label1:     TLabel;      
                Label2:     TLabel;      
                Button1:     TButton;      
                procedure     Button1Click(Sender:     TObject);      
        private      
                {     Private     declarations     }      
        public      
        x,i:Integer;//在这里声明变量可以吗?还是应该在button的事件里声明?      
        Array16:Array[1..16]     of     Integer;//保存在这个数组里      
                {     Public     declarations     }      
        end;      
     
  var      
        Form1:     TForm1;      
  implementation      
     
  {$R     *.dfm}      
     
  procedure     TForm1.Button1Click(Sender:     TObject);      
  begin      
  x:=strtoint(Form1.MaksEdit1.Text);//赋值给中间变量x      
  i:=16;      
  repeat      
  Array16[i]:=x     mod     2;//偶这里是用最原始的方法了,连续取余呵呵      
  x:=x     div     2;      
  i:=i-1;      
  until     i=0;      
  end;      
  end.      
     
  ------------------------------------分割线--------------------------------      
  程序可以运行      
  1.我不会查看结果到底对不对,我只会用把数组某一位赋值给另外的edit.text来看某1位是不是对的,请问有什么方法可以查看下整个数组是否正确      
  2.MaskEdit1的属性为9999;0;          
  当输入是4位的时候,点击按钮可以成功,但是如果少于4位数,就会出错,说不是有效的值      
  3.有没有这类函数inttobinary()     如果有,如何实现我的要求,我看过些例子都是连续shr转到个string里的,转到数组里如何实现?      
  4.如果我这个程序其他位置还要使用该过程,请问如何定义?定义写在哪,主体写在哪?调用的时候格式是如何?      
  ------------------------------------分割线---------------------------------      
  偶是新手,希望朋友能耐心读完,帮忙解决下问题,解答时候尽量详细些     谢谢  
 

补充一下  
  2.MaskEdit1的属性为!9999;0;           第3个属性用空格和0   都试过   问题依旧

unit     Unit1;      
     
  interface      
     
  uses      
        Windows,     Messages,     SysUtils,     Variants,     Classes,     Graphics,     Controls,     Forms,      
        Dialogs,     StdCtrls,     Mask;      
     
  type      
        TForm1     =     class(TForm)      
                MaskEdit1:     TMaskEdit;//从这里输入数字      
                Label1:     TLabel;      
                Label2:     TLabel;      
                Button1:     TButton;      
                procedure     Button1Click(Sender:     TObject);      
        private      
                {     Private     declarations     }      
        public      
        x,i:Integer;//在这里声明变量可以吗?还是应该在button的事件里声明?      
        在这里和在button里都可以声明变量,但生存周期不一样  
        Array16:Array[1..16]     of     Integer;//保存在这个数组里      
        这里似乎没有必要用integer,有点浪费了。  
                {     Public     declarations     }      
        end;      
     
  var      
        Form1:     TForm1;      
  implementation      
     
  {$R     *.dfm}      
     
  procedure     TForm1.Button1Click(Sender:     TObject);      
  begin      
  x:=strtoint(Form1.MaksEdit1.Text);//赋值给中间变量x      
  i:=16;      
  repeat      
  Array16[i]:=x     mod     2;//偶这里是用最原始的方法了,连续取余呵呵      
  x:=x     div     2;      
  i:=i-1;      
  until     i=0;      
  end;      
  end.      
     
  后面你那许多问题,我建议你找本OBJECT   PASCAL或者DELPHI的书看看,  
   
   
  给你写了一个例子:把一个整形数转换成2进制字符串输出  
   
  unit   Unit1;  
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
      Dialogs,   StdCtrls;  
   
  type  
      TForm1   =   class(TForm)  
          Edit1:   TEdit;  
          Button2:   TButton;  
          Edit2:   TEdit;  
          procedure   Button2Click(Sender:   TObject);  
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      Form1:   TForm1;  
   
  implementation  
   
  {$R   *.dfm}  
   
  function   IntToBinaryStr(TheVal:   LongInt):   string;  
  var  
      counter:   LongInt;  
  begin  
      if   TheVal   =   0   then   begin  
          result   :=   '0';  
          exit;  
      end;  
      result   :=   '';  
      counter   :=   $80000000;  
      {Suppress   leading   zeros}  
      while     ((counter   and   TheVal)   =   0)   do   begin  
          counter   :=   counter   shr   1;  
          if   (counter   =   0)   then   break;   {We   found   our   first   "1".}  
      end;  
      while   counter   >   0   do   begin  
          if   (counter   and   TheVal)   =   0   then   result   :=   result   +   '0'  
          else     result   :=   result   +   '1';  
          counter   :=   counter   shr   1;  
      end;  
  end;  
   
   
  procedure   TForm1.Button2Click(Sender:   TObject);  
  begin  
        Edit2.Text   :=   IntToBinaryStr(StrToInt(Edit1.Text))  
  end;  
   
  end.  
   
   
 

恩恩   还没学得太透彻   借了些书对Pascal讲解篇幅不太多  
   
  我这里后面是要做个串口传输控制的程序  
   
  要一位一位传  
   
  把数组每一位陆续传到串口  
   
  不使用控件   不使用Api   是内嵌汇编   在98系统下做  
   
  如果是string型   如何实现一位一位   请给出方法  
   
  继续等  
  谢谢

不知楼主说的一"位"是不是指string里的一个字符..如果是,那么:  
   
  如有:  
  string:='abcdefg';  
  则:  
  string[1]     ==     'a';  
  string[2]     ==     'b';  
  ...

强烈鄙视问题解决后不结贴的人!  
  强烈鄙视技术问题解决后把贴子转移到非技术区的人!  
  鄙视你们!  
   
  http://community.csdn.net/Expert/topic/5216/5216675.xml?temp=.9262659

posted @ 2009-02-11 16:49 delphi2007 阅读(177) | 评论 (0)编辑 收藏

高手来瞧瞧,到底哪个过程被调用? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061209215840211.html
procedure   Confused(I:   Integer);   overload;  
        ...  
  procedure   Confused(I:   Integer;   J:   Integer   =   0);   overload;  
        ...  
  Confused(X);       //     Which   procedure   is   called?
posted @ 2009-02-11 16:49 delphi2007 阅读(119) | 评论 (0)编辑 收藏

"获得主机名和IP地址" 和 "监测局域网内计算机" Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061209192223212.html
哪位大虾可以帮帮忙啊,帮我把这两段程序分析一下啊,万分感激!!!!!!  
  获得主机名和IP地址:  
    hostName;  
  interface  
  uses  
  Windows,   Messages,   SysUtils,   Classes,   Graphics,   Controls,   Forms,Dialogs,  
      StdCtrls,   Winsock;  
  type  
      TForm1   =   class(TForm)  
          Edit1:   TEdit;Label1:   TLabel;Label2:   TLabel;Edit2:   TEdit;Edit3:   TEdit;  
          Label3:   TLabel;Button1:   TButton;  
          procedure   Button1Click(Sender:   TObject);  
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
      end;  
  var  
      Form1:   TForm1;  
  implementation  
  {$R   *.DFM}  
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
                  Ip:string;  
                  Ipstr:string;  
                  Buffer:Array[1..32]   of   char;            
                  i:integer;  
                  WSData:TWSAdata;              
                  Host:PHostEnt;                
  begin  
                  if   WSAstartup(2,WSData)<>0   then          
                  begin  
                          ShowMessage('WS2_32.DLL初始化失败!');  halt;   end;  
                  try                                                                                
                          if   GetHostName(@Buffer[1],32)<>0   then            
                          begin  
                                  ShowMessage('没有得到主机名!');      halt;  end;  
                  except  
                          ShowMessage('没有成功返回主机名');      halt;   end;  
                  Host   :=   GetHostByName(@Buffer[1]);  
                  if   Host   =   nil   then  
                            begin  
                                  ShowMessage('IP地址为空');        halt;   end  
                  else  
                            begin  
                                  Edit2.Text   :=   Host.h_name;  
                                  Edit3.Text   :=   Chr(Host.h_addrtype+64);  
                                  for   i:=1   to   4   do                          
                                          begin  
                                                  Ip:=IntToStr(Ord(Host.h_addr^[i-1]));  
                                                  ShowMessage('分段IP地址为:'+Ip);  
                                                  if   i<4   then  
                                                        Ipstr   :=   Ipstr   +   Ip   +   '.'  
                                                  else  
                                                        Edit1.Text:=Ipstr+Ip;   end;    end;  
                                  WSACleanup;     end;         end.  
  监测局域网内计算机:  
  unit   local;  
  interface  
  uses  
    Windows,   Messages,   SysUtils,   Classes,   Graphics,   Controls,   Forms,   Dialogs,  
      StdCtrls,Winsock;  
  type  
      TForm1   =   class(TForm)  
      Button1:   TButton;       Edit1:   TEdit;       Memo1:   TMemo;     Label1:   TLabel;  
          procedure   Button1Click(Sender:   TObject);  
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
      end;  
  var  
      Form1:   TForm1;  
  function   FindComputer(ComputerName:   string):Boolean;  
  implementation  
  {$R   *.DFM}  
  function   FindComputer(ComputerName:   string):Boolean;  
  var  
      WSAData:   TWSAData;            
      HostEnt:   PHostEnt;  
  begin  
      Result   :=True;  
      WSAStartup(2,   WSAData);  
      HostEnt   :=   gethostbyname(PChar(ComputerName));  
      if   HostEnt   =   nil   then   Result   :=   False;  
      WSACleanup;           end;  
  procedure   TForm1.Button1Click(Sender:   TObject);  
  begin  
      if   FindComputer(edit1.text)=True   then  
          Memo1.lines.Add(edit1.text+'在局域网上!')  
      else  
          Memo1.lines.Add(edit1.text+'不在局域网上!');       end;       end.  
 
posted @ 2009-02-11 16:49 delphi2007 阅读(312) | 评论 (0)编辑 收藏

有谁知道这种文本显示效果是怎样实现的 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061209142625213.html
有谁知道这种文本显示效果是怎样实现的,特别是中间哪条灰色分隔线是怎么实现的。  
   
  程序界面截图     http://www.52ebooks.com/txt.gif  
   
   
  实在是没分给你,有的话一定给

图看不到

给lz骗了

posted @ 2009-02-11 16:49 delphi2007 阅读(102) | 评论 (0)编辑 收藏

关于rave报表使用的问题 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061209123625214.html
我已在rave报表中的band和databand中添加内容,为何预览的时候没有东西显示出来?

各位高手帮帮忙啊~~

急啊,各位帮帮忙啊

注意设置打印区域啊,如果你没设置区域是不可能看见东西的!

谢谢,这个问题已解决~

posted @ 2009-02-11 16:49 delphi2007 阅读(202) | 评论 (0)编辑 收藏

delphi interface 会不会导致内存泄漏? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061209123404215.html
讨论一下:为什么接口不需要释放,也不会导致内存泄漏?是否是垃圾收集类再起作用?或者编译器对接口有独特的处理?

引用计数的,为0时释放

delphi的接口类型如果用在COM开发上,你是必须要自己处理Release的。用在其它对象接口上就不需要了

posted @ 2009-02-11 16:49 delphi2007 阅读(228) | 评论 (0)编辑 收藏

如何对一个RichEdit查询,并把查询出来的结果放到另一个RichEdit里, Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061209085300216.html
现有两个RichEdit控件,richedit1里   显示接收到的数据,每条数据   用回车分开,现要实现对RichEdit1的查询,把查询后的结果,在RichEdit2里显示,求教各位高手了

问题中没说清楚查询的条件,怎么给你写查询?谈何结果?  
  不要“自己心里明”,要有“提问的艺术”。  
  ----说得可能尖刻,望能接受。

我的是比如   ricdedit1   控件里有    
   
  001   姓名:张三     年龄:20   性别:男   备注:     SOA   实践全攻略           急聘web前端开发工程师           07年就业班级,追赶职场黄金期,热报!           .net专场招聘会12月10(北京)      
     
  002   姓名:李四     年龄:21   性别:女   备注:     SOA   实践全攻略           急聘web前端开发工程师           07年就业班级,追赶职场黄金期,热报!           .net专场招聘会12月10(北京)      
     
  003   姓名:王五     年龄:20   性别:男   备注:     SOA   实践全攻略           急聘web前端开发工程师           07年就业班级,追赶职场黄金期,热报!           .net专场招聘会12月10(北京)      
  ///////////////  
   
  现要实现一个查询,比如查   “男”,则会把查询的结果在richedit2里显示,显示形式如下  
   
  //////////////  
   
  001   姓名:张三     年龄:20   性别:男   备注:     SOA   实践全攻略           急聘web前端开发工程师           07年就业班级,追赶职场黄金期,热报!           .net专场招聘会12月10(北京)      
       
  003   姓名:王五     年龄:20   性别:男   备注:     SOA   实践全攻略           急聘web前端开发工程师           07年就业班级,追赶职场黄金期,热报!           .net专场招聘会12月10(北京)

procedure   TForm1.Button2Click(Sender:   TObject);  
  var  
        I:integer;  
  begin  
        Edit1.Text:='男';//之所以要用   '性别:男'   作为查询条件,是因为防止姓名等其他位置有'男'字  
        for   I   :=   0   to   RichEdit1.Lines.Count-1   do  
                if   pos('性别:'+Edit1.text,richedit1.Lines[I])>0   then  
                      Richedit2.Lines.Add(Richedit1.Lines[I]);  
  end;  
  //好象RichEdit处理这样的数据并不是强项。

可以用grid一类的控件。不过可能你有特殊的需要。上面的代码可以实现你的需求。可以改写一下,根据不同的条件,改变('性别:'+Edit1.text)的值。如:用checkbox判断查询的是姓名,还是性别...       如要查询姓名,可以这样:  
  var   SubStr:string;  
  .....  
  if   checkboxXingMing.checked   then   SubStr:='姓名:'+Edit1.Text;  
  .....  
        if   if   pos(SubStr,richedit1.Lines[I])>0   then   ......

posted @ 2009-02-11 16:49 delphi2007 阅读(134) | 评论 (0)编辑 收藏

查询表的总行数的问题 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061208235833217.html
在delphi中我查询了数据表总数,要把这个值赋给一个变量怎么操作?  
  不好意思我不能给分了.大家义务帮我下吧~~

是把“表的总行数”这个整型数赋值给变量是吧?  
   
  数据集以ADOQuery为例:  
   
  Var    
        rCount:integer;  
  begin  
        with   adoquery   do  
              begin  
              close  
              sql.clear;  
              sql.text:='select   *   from   表名';  
              open;  
              end;  
  //上面with到此处,都是我多写上的  
              iCount:=ADOQuery.recordcount;//其实就是这一句  
              showmessage(inttostr(iCount));  
  end;  
   
  ----难道你的问题就是这么简单吗?

上面有两处,把rCount写错成iCount了,请自己改

我主要是想实现自动编号的功能.不过我自己解决了~  
  因为delphi才用,都在自己摸索~  
  能不能指教下怎么判断两个edit中输入的是否一致?!

呵~~  
  if   Edit1.text   =   Edit2.text   then   一致   else   不一致

可是我这样做,运行之后没判断的...不知道为什么~  
  我是想做密码输入判断.一致的话把值传入数据库...这么写我试过不行才问大家的...很奇怪

...  
  sql.text   :=   'select   count(*)   as   cnt   from   表名'  
  ...  
  iCnt   :=   ADOQuery.FieldByName('cnt').AsInteger;

posted @ 2009-02-11 16:49 delphi2007 阅读(152) | 评论 (0)编辑 收藏

怎么在程序运行的时候出现和DELPHI下一样的调试信息??? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061208192442218.html
这个是远程连接SQL,只需要输入IP和SQL用户和密码就可以连接,但不管是IP错误还是用户或者密码错误程序的SHOWMESSAGE都只是一样的信息“Access   wiolation   at   address   0048996E   in   module......   ”          
           
  代码:  
          try  
              ADOConnection1.Connected   :=   True;  
          except  
                  showmessage(E.Message);  
          end;  
  怎么才能SHOWMESSAGE我需要的信息,因为在DELPHI下IP错误和用户或者密码错返回的提示是不一样的,我需要根据信息来分别处理!

showmessage(E.Message)当然是显示系统异常信息.   你自定义你自己的异常信息.  
   
  如   EIPException   =   Exception  
        EPassException   =   Exception  
   
  try  
      ....  
  except  
    E1:   on   EIPException   Showmessage('IP错误')  
    E2:   On   EPassException   Showmessage('密码错误错误')  
 

try  
      ....  
  except  
      on   E1:   EIPException   DO   Showmessage('IP错误')  
      On   E2:   EPassException   DO   Showmessage('密码错误错误')  
  END;

posted @ 2009-02-11 16:49 delphi2007 阅读(140) | 评论 (0)编辑 收藏

怎样实现模块间的参数传递?急急急!!!!!!!!! Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061208171655219.html
我现在做一个简易的登录器,由一个登录界面,及登录后的一些模块,但登录成功进入另一个模块后,我需要知道当前是谁登录的系统,好久都想不通,请高人指点,谢谢!  
   
  急呀!!!!!!

用个全局变量吧,不懂,楼主叫什么呀?怎么和我的名字缩写一样啊

就叫张成威,不知你说的全局变量可以实现那个功能吗

当然可以了,你在主窗体上主义一个全局变量,在登录窗体上用该变量记录下当前用户登录时的用户名或什么的信息....在其它地方就可以调用这个变量了~

sessin

session

当然可以了,你在主窗体上主义一个全局变量,在登录窗体上用该变量记录下当前用户登录时的用户名或什么的信息....在其它地方就可以调用这个变量了~  
   
  他说得比我详细哈,就是这么用的哦  
  那你怎么是ZRZ的呀....

UP   ---->   zhangruizhi1216(我啥也不会~)      
   
 

我倒

可以重载create()函数

posted @ 2009-02-11 16:49 delphi2007 阅读(101) | 评论 (0)编辑 收藏

寻找一个可以在Delphi中使用的hash表类 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061208160629220.html
轻量级的,只要能够使用字符串作为键值的即可。  
  我找到一个HashTrie,编译出来一大堆警告还不说了,  
  而且速度也是具慢无比。  
  有没有哪位老兄推荐一个给我啊?  
  谢了先。  
  如果实在找不到的话我就用c++做dll来搞了。

 
  试试THashedStringList  
   
  uses  
  IniFiles

THashedStringList对于大容量的不行,  
  我测试的时候向其中加入10000个元素,去上个厕所还没加完。  
  我上次在新闻组上问了,找到一个cnpack里面的,  
  速度还马马虎虎,比python的慢一倍。  
 

JCL里面的有

jcl中确实有,  
  谢谢楼上,  
  我打算用cnpack里面的。  
  分给你。

^

posted @ 2009-02-11 16:49 delphi2007 阅读(193) | 评论 (0)编辑 收藏

仅列出标题
共34页: First 10 11 12 13 14 15 16 17 18 Last