delphi2007 教程

delphi2007 教程

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

#

从流中读出jpg,为什么不行,高手指点 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiMultimedia/html/delphi_20060927172223286.html
var  
  stmrcv:tmemorystream;  
  jp:tjpegimage;  
   
   
  stmrcv.CopyFrom   (adata,adata.Size   )   ;  
  stmrcv.Position:=0;  
  jp.LoadFromStream(stmrcv);为什么最后这句不执行?  
   
 

adata中的数据可能不是TJPEGImage所支持的

另外adata也需要position   :=   0;

传输的时候是一个jpg   saveto的,  
  stmrcv.CopyFrom   (adata,adata.Size   )   ;这句之后看了下stmrcv的大小和传出的流大小一样,就是到了jp.LoadFromStream(stmrcv);不执行了

大小一样你确定数据也一样吗?  
  用SaveToFile保存到文件,然后分别比较一下传输前和传输后以及CopyFrom前后的文件内容

传输前的流SaveToFile都是jpg,但stmrcv.CopyFrom   (adata,adata.Size   )后stmrcv在SaveToFile后出现的是一个大小一样的jpg文件,但打不开,每一步都position   :=   0了,不知道问题出在哪一步上

stmrcv你有没初始化过?

mark  
 

多半是少了stmrcv.seek(0,   soFromBeginning)

stmrcv,   jp没看见建立对象语句  
 

你把流保存成文件,看看是不是正确的JPEG文件。

unit   Unit1;  
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
      Dialogs,   jpeg,   StdCtrls;  
   
  type  
      TForm1   =   class(TForm)  
          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  
      bmp:   TBitmap;  
      j,   j2:   TJPEGImage;  
      ms,   ms2:   TMemoryStream;  
  begin  
      bmp   :=   TBitmap.Create;  
      bmp.Width   :=   ClientWidth;  
      bmp.Height   :=   ClientHeight;  
      PaintTo(bmp.Canvas,   0,   0);  
   
      j   :=   TJPEGImage.Create;  
      j.Assign(bmp);  
      FreeAndNil(bmp);  
   
   
      ms   :=   TMemoryStream.Create;  
      j.SaveToStream(ms);  
      FreeAndNil(j);  
      ///////////////////////////////////////////////////  
   
      ms2   :=   TMemoryStream.Create;  
      ms.Position   :=   0;  
      ms2.CopyFrom(ms,   ms.Size);  
      FreeAndNil(ms);  
   
   
      j2   :=   TJPEGImage.Create;  
      ms2.Position   :=   0;  
      j2.LoadFromStream(ms2);  
      FreeAndNil(ms2);  
      j2.SaveToFile('c:\1.jpg');  
   
      FreeAndNil(j2);  
   
   
   
  end;  
   
  end.  
   
 

posted @ 2009-03-13 10:29 delphi2007 阅读(186) | 评论 (0)编辑 收藏

新手求救:在image上用canvas画一个很粗的线条,如何让这个粗条半透明显示呢? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiMultimedia/html/delphi_20060926224629287.html
或者是画一个圆形,也要半透明显示,如何做到呢?多谢了。  
   
 

半透明,就是能透过一层看到下面一层的图像,所以,  
   
  1.你要设置两层图像:image1,image2,其中image1在image2之下,  
   
  2.把你所画的图形放在image2上面,  
   
  3.同时画图的image2层本身设置为透明(transparent),同时  
      使所画图形(即你的粗线条)本身留有空隙.  
   
  自然,不用第3步,也可以做到半透明,即改为:  
  3'.读取下层图像与上层进行逐点混色.  
   
 

posted @ 2009-03-13 10:29 delphi2007 阅读(155) | 评论 (0)编辑 收藏

如何做到BMP图象缩放时平滑过渡? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiMultimedia/html/delphi_20060926170109289.html
类似CAD、GOOGLE   EARTH的效果,哪个高手给说道说道

1   CAD不是BMP图片,是一种矢量图  
  2   GoogleEarth是用了多级图片,不同的缩放级别显示不同的图片

GoogleEarth在同一级别缩放也是相当平滑的,不知道怎么实现的,高手请继续说

有一些平滑算法,可以让图片,看起来有些平滑...

缩放使用插值算法,比如双线性插值,样条插值等等

同意楼上,选取好的插值算法。

有   开源项目..   去   sf查查   看

//图像缩放过程,带插值运算(线性插值法)  
  //参数:矩形区域,源图像  
  //注意:此代码只支持24或32位色的情况(对于15或16位色需要按位拆开—因为不拆开的话  
  //             会在计算中出现不期望的进位或借位,导致图像颜色混乱—处理较麻烦;对于8位  
  //             及8位以下索引色需要查调色板,并且需要重索引,也很麻烦,所以都不支持;但  
  //             8位灰度图像可以支持)。另外代码中加入一些在图像边缘时防止访问越界的代码。  
  procedure   StretchLinear(Dest,   Src:   TBitmap);   //   only   for   24bit   bitmap  
  var  
      sw,   sh,   dw,   dh,   B,   N,   x,   y,   i,   j,   k,   nPixelSize:   DWord;  
      pLinePrev,   pLineNext,   pDest,   pA,   pB,   pC,   pD:   PByte;  
  begin  
      sw   :=   Src.Width   -1;  
      sh   :=   Src.Height   -1;  
      dw   :=   Dest.Width   -1;  
      dh   :=   Dest.Height   -1;  
      nPixelSize   :=   3;               //GetPixelSize(Dest.PixelFormat)  
      for   i   :=   0   to   dh   do   begin  
          pDest   :=   Dest.ScanLine[i];  
          y   :=   i   *   sh   div   dh;  
          N   :=   dh   -   i   *   sh   mod   dh;  
          pLinePrev   :=   Src.ScanLine[y];  
          Inc(y);  
          if   N   =   dh   then   begin  
              pLineNext   :=   pLinePrev;  
          end   else   begin  
              pLineNext   :=   Src.ScanLine[y];  
          end;  
          for   j   :=   0   to   dw   do   begin  
              x   :=   j   *   sw   div   dw   *   nPixelSize;  
              B   :=   dw   -   j   *   sw   mod   dw;  
              pA   :=   pLinePrev;  
              Inc(pA,   x);  
              pB   :=   pA;  
              Inc(pB,   nPixelSize);  
              pC   :=   pLineNext;  
              Inc(pC,   x);  
              pD   :=   pC;  
              Inc(pD,   nPixelSize);  
              if   B   =   dw   then   begin  
                  pB   :=   pA;  
                  pD   :=   pC;  
              end;  
              for   k   :=   0   to   nPixelSize   -1   do   begin  
                  pDest^   :=   Byte(DWord(   (B   *   N   *   DWord(pA^   -   pB^   -   pC^   +   pD^)   +   dw   *   N   *   pB^  
                                                              +   dh   *   B   *   pC^   +   (dw   *   dh   -   dh   *   B   -   dw   *   N)*   pD^  
                                                              +   dw   *   dh   div   2)   div   (dw   *   dh)   ));  
                  Inc(pDest);  
                  Inc(pA);  
                  Inc(pB);  
                  Inc(pC);  
                  Inc(pD);  
              end;  
          end;  
      end;  
  end;  
 

posted @ 2009-03-13 10:29 delphi2007 阅读(413) | 评论 (0)编辑 收藏

关闭playsound Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiMultimedia/html/delphi_20060926164903290.html
 
                    PlaySound(PChar('c:\wav\nottalk.wav'   ),   0,   SND_ASYNC);  
   
  我要怎么样才能关闭播放呢,当然不能关闭程序

PlaySound(nil,   0,   SND_PURGE);

posted @ 2009-03-13 10:29 delphi2007 阅读(228) | 评论 (0)编辑 收藏

请教做个图标扇动提示》在线等 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiMultimedia/html/delphi_20060926160404291.html
用DELPHI如何做个小图标老扇动呢?在样可以提示?多谢!
posted @ 2009-03-13 10:29 delphi2007 阅读(111) | 评论 (0)编辑 收藏

求助: 用DSPACK播放VOB文件的问题 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiMultimedia/html/delphi_20060925181523292.html
请问高手:  
   
              我应该如何用DSPack来播放本地硬盘上面的VOB文件?  
   
              我用DSPACK来播放VOB文件,用FilterGraph.RenderFile(文件名.vob),在调试环境下运行,会报错,不能播放,但是生成的EXE文件有时可以播放,请问这是为什么?  
   
              另外用FilterGraph.RenderDVD,就没有报上面的错误,但是提示要求有DVD光盘.  
   
              谢谢大家了
posted @ 2009-03-13 10:29 delphi2007 阅读(209) | 评论 (0)编辑 收藏

为什么调用TWindowsMediaPlayer控件的newMedia()方法的时候会出错? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiMultimedia/html/delphi_20060925142521293.html
我的delphi是7版本的,WindowsMediaPlayer   是9.0版本

CSDN真的没有高手拉?

我安装的是Delphi2006,WindowsMediaPlayer是10.0版,用newMedia()并没有出错。

posted @ 2009-03-13 10:29 delphi2007 阅读(284) | 评论 (0)编辑 收藏

如果修改调色板,实现单色位图文件反色 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiMultimedia/html/delphi_20060925090610294.html
请问如何修改调色板,通过修改调色板把黑色变白色,白色变黑色,那位高人能用DELPHI写一小段示例程序吗?急啊

解析出R,G,B,利用Canvas的Pixels[x][y],配合GetRValue,GetGValue和GetBValue函数,之后将这个值减去255,即:  
  Pixels[x][y]   =   GetRValue(Pixels[x][y])   -   255;  
  ......

把调色板的值反一下

色板中每个色值的RGB分量被255减即可

posted @ 2009-03-13 10:29 delphi2007 阅读(231) | 评论 (0)编辑 收藏

怎样画一个矩形将列出的若干个点都包含在里面,并且矩形是刚刚好包含这些点。 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiMultimedia/html/delphi_20060923191237297.html
各位兄弟,怎样画一个矩形将列出的若干个点都包含在里面,并且矩形是刚刚好包含这些点。矩形的角度由这些点的边决定。  
 

遍历点   x   y坐标值.取出点最left值,最top值,最buttom值,最right值.不就可以画了?

我也这样想过,不过当所有的点形成三角形时用这种算法就会出现问题了。

先求凸包,   最小矩形   不知道怎么证明

如果是只有横线和竖线的矩形当然好办,用Min,Max之类的函数就搞定了。  
  如果要求可能是有倾斜的矩形就有点复杂……

找出   所有点的   ~~   最小坐标(取X最小的点和Y最小的点)和最大坐标……

用数值解.

posted @ 2009-03-13 10:29 delphi2007 阅读(216) | 评论 (0)编辑 收藏

用scanline取BMP上某点的颜色,代码如下,为什么可以编译,运行时却出错呢? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiMultimedia/html/delphi_20060923102511298.html
procedure   TForm1.Image1Click(Sender:   TObject);  
  var  
    x,y:Integer;  
    Pixs:array   of   TColor;  
  begin  
   
    image1.Picture.loadfromfile('d:\001.bmp');  
    Pixs:=image1.Picture.Bitmap.ScanLine[0];  
    if   Pixs[0]=clwhite   then   showmessage('www');  
   
  end.  
   
  请路过的朋友不吝赐教啊。。

p:ByteArray;  
  p:=image1.Picture.Bitmap.ScanLine[0];

多谢,但是为什么tcolor数组不行?

类型不同

请问能不能将scanline出来的值经过转换后输入到tcolor数组,我想它们都是表示颜色的,应该可以做到吧?

 
  看下ScanLine的   使用  
 

"为什么可以编译,运行时却出错呢?"  
   
  要写一个编译不出错,而运行出错的程序真的太容易了。

var  
  a:TBitMap  
  begin  
          form1.canves.Draw(x,y,a);  
  end;  
   
  这样应该就编译得过但运行出错!

posted @ 2009-03-13 10:29 delphi2007 阅读(283) | 评论 (0)编辑 收藏

多层画图慢! Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiMultimedia/html/delphi_20060923101243299.html
用三层的IMAGE实现鼠标在一个扫描文本图上的手写笔功能,底层IMAGE显示扫描的文档图,中间IMAGE显示的是每个人作的批示的图,最上层IMAGE用来作当前进入的人的画板显示当前人的手写内容.  
        问题:第一次进入时,书写很流畅!但第二次再进入时,由二中间的层上有以前的书写内空,这时在最上层   写东西,会很慢,鼠标反应很慢!动的快,会出折线!!但在空白处画就又很快,  
   
   
        这是不是因为有中间的那个IMAGE的问题?请问怎么解决?(双缓冲已打开)

好像大家都很热衷于摆上好几层的Image……这已经是今天第三次遇到了。  
   
  建议是使用一个包含Bitmap的TObjectList保存各个图层的信息,这个是不可见的。然后使用PaintBox或者其他什么的作为绘板母体,然后把List中的各个Bitmap依次画上去就Ok了。

同意楼上的做法

一般情况下,所谓的图层并不是真正一层叠一层的。图层不过是图元的列表。图层不过决定了绘制的先后顺序,谁覆盖谁的问题。  
   
  要透过现象看本质。用三个IMAGE叠起来,想不慢都不行。

建议使用Imageen,支持layer

用三个IMAGE叠起来,想不慢都不行。

学习一下,三个图层怎么合并到一个图中?如果下次调出来怎么分解成三个图层?

posted @ 2009-03-13 10:29 delphi2007 阅读(153) | 评论 (0)编辑 收藏

急求TWindowsMediaPlayer循环播放的问题的问题! Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiMultimedia/html/delphi_20060922222216300.html
我想用TWindowsMediaPlayer无限循环播放一个媒体文件,当文件播放结束的时候再从头来过,无限次。当我在playstatechange事件中,当播放结束的时候,再play,只有声音没有图像,然后用close,然后,url重新负值,然后play,竟然没有反应!请指教!谢谢

这样的代码,在D7   XPsp2   WMP10下循环播放WMV文件并没有问题  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  begin  
      WindowsMediaPlayer1.URL:=   'd:\1.wmv';  
  end;  
   
  procedure   TForm1.WindowsMediaPlayer1PlayStateChange(ASender:   TObject;  
      NewState:   Integer);  
  begin  
      if   NewState   =   wmppsStopped   then   WindowsMediaPlayer1.controls.play;  
  end;

谢谢先,这样可以播发是可以,只有声音,但是没有图像,屏幕是黑的!

难道是解码的原因?

解码没有问题,第一次的时候播放没有问题,就是第二边的的时候就有问题!

posted @ 2009-03-13 10:29 delphi2007 阅读(323) | 评论 (0)编辑 收藏

求救:activeForm释放问题? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061204173421201.html
问题:1.在win2000,IE6下,先打开一个IE,不做任何操作.  
     2.后再先打开一个嵌有activeForm控件的页面(ActiveFormProj11.htm).  
     3.关闭ActiveFormProj11.htm后再次打开,出现"Access   violation   at   address   00000000   in   module   'activeForm.ocx  
              4.如果没有第1步,不先打开一个IE,就不会出现第3步提示.  
              5.在win2k3的IE6中不会出现任何问题.  
  发现如果有一个IE先打开,后面再打开有控件的页面后关闭,想删除控件,提示有一个用户在使用,即当有一个IE先打开时,activeForm.ocx控件没被关闭和释放?各位大侠,如何解决.        
 

上面例子就是用向导简单做一个例子,另再加一个窗口,在activeform自动生成的窗口的create事件中增加如下代码:  
  procedure   THqFormX.ActiveFormCreate(Sender:   TObject);  
  begin  
      self.AxBorderStyle:=   forms.afbNone;  
      Form1:=   TForm1.Create(self);  
      Form1.BorderStyle:=   bsNone;  
      Form1.Parent:=   self;  
      Form1.Align:=   alClient;  
      Form1.Show;  
  end;  
  form1为THqFormX的成员.  
      public  
          {   Public   declarations   }  
          Form1:   TForm1;  
          procedure   Initialize;   override;  
 

没用过,up

ActiveForm   本质上是   运行在多线称环境(每个IE窗口都是独立线称)下的dll,  
  宿主进程就是iexplore.exe,VCL会有一些线程安全问题,很令人头痛。  
   
  对于你的问题,可以这样试试:  
   
  删除   Form1.pas   中   Form1   :   TForm1   这个全局变量,改在   THqFormX   的成员中声明。

这个问题的本质原因在于delphi的源码文件AxCtrls.pas中存在bug,  
  导致控件未正常析构之前给ParkingWindow发送了WM_DESTROY消息,  
  导致ParkingWindow关闭,而控件访问了不存在的窗口,导致异常。  
   
  解决的方法是修改Borland/delphi7/source/vcl/AxCtrls.pas文件。  
  一共修改两个函数如下:  
   
 

一个是ParkingWindowProc()函数,修改如下:  
  function   ParkingWindowProc(Wnd:   HWND;   Msg,   wParam,   lParam:   Longint):   Longint;   stdcall;  
  var  
      ControlWnd:   HWND;  
  begin  
      case   Msg   of  
          WM_COMPAREITEM,   WM_DELETEITEM,   WM_DRAWITEM,   WM_MEASUREITEM,   WM_COMMAND:  
              begin  
                  case   Msg   of  
                      WM_COMPAREITEM:   ControlWnd   :=   PCompareItemStruct(lParam).CtlID;  
                      WM_DELETEITEM:     ControlWnd   :=   PDeleteItemStruct(lParam).CtlID;  
                      WM_DRAWITEM:         ControlWnd   :=   PDrawItemStruct(lParam).CtlID;  
                      WM_MEASUREITEM:   ControlWnd   :=   PMeasureItemStruct(lParam).CtlID;  
                      WM_COMMAND:           ControlWnd   :=   HWND(lParam);  
                  else  
                      Result   :=   0;  
                      Exit;  
                  end;  
                  Result   :=   SendMessage(ControlWnd,   OCM_BASE   +   Msg,   wParam,   lParam);  
              end;  
      else  
          ////////////////////////////////////////////////////////////////////////////  
          //zhaoyan   edit   begin  
          {  
          if   (Msg   =   WM_NCDESTROY)   and   (Wnd   =   xParkingWindow)   then   xParkingWindow   :=   0;  
          Result   :=   DefWindowProc(Wnd,   Msg,   WParam,   LParam);  
          }  
          if   (Msg   =   WM_NCDESTROY)   and   (Wnd   =   xParkingWindow)   then  
          begin  
                  xParkingWindow   :=   0;  
                  Result   :=   DefWindowProc(Wnd,   Msg,   WParam,   LParam);  
          end   else   begin  
                  Result   :=   SendMessage(ControlWnd,   OCM_BASE   +   Msg,   wParam,   lParam);  
          end;  
          //zhaoyan   edit   end  
          /////////////////////////////////////////////////////////////////////////////  
      end;  
  end;

另外一个是ParkingWindow()函数,修改如下:  
  function   ParkingWindow:   HWND;  
  var  
      TempClass:   TWndClass;  
      ParkingName:String;   //zhaoyan   add  
  begin  
      Result   :=   xParkingWindow;  
      if   Result   <>   0   then   Exit;  
   
      //zhaoyan   add   start  
      //fixDaxerror:accessviolation(win2k,winxp)  
      ParkingName:='DAXParkingWindow_'+Format('%p',[@ParkingWindowProc]);  
      //zhaoyan   add   end  
   
      FillChar(TempClass,   sizeof(TempClass),   0);  
   
      //zhaoyan   edit   start  
      //fixDaxerror:accessviolation(win2k,winxp)  
      if   not   GetClassInfo(HInstance,PChar(ParkingName),TempClass)then  
      //if   not   GetClassInfo(HInstance,   'DAXParkingWindow',   TempClass)   then  
      //zhaoyan   edit   end  
      begin  
          TempClass.hInstance   :=   HInstance;  
          TempClass.lpfnWndProc   :=   @ParkingWindowProc;  
   
          //zhaoyan   edit   start  
          TempClass.lpszClassName:=PChar(ParkingName);//fixDaxerror:accessviolation(win2k,winxp)  
          //TempClass.lpszClassName   :=   'DAXParkingWindow';  
          //zhaoyan   edit   end  
          if   Windows.RegisterClass(TempClass)   =   0   then  
              raise   EOutOfResources.Create(SWindowClass);  
      end;  
      xParkingWindow   :=   CreateWindowEx(WS_EX_TOOLWINDOW,   TempClass.lpszClassName,   nil,  
          WS_POPUP,   GetSystemMetrics(SM_CXSCREEN)   div   2,  
          GetSystemMetrics(SM_CYSCREEN)   div   2,   0,   0,   0,   0,   HInstance,   nil);  
      SetWindowPos(xParkingWindow,   0,   0,   0,   0,   0,   SWP_NOACTIVATE   or   SWP_NOREDRAW  
          or   SWP_NOZORDER   or   SWP_SHOWWINDOW);  
      Result   :=   xParkingWindow;  
  end;

结贴

一个是ParkingWindowProc()函数,修改如下:      
  function     ParkingWindowProc(Wnd:     HWND;     Msg,     wParam,     lParam:     Longint):     Longint;     stdcall;      
  var      
        ControlWnd:     HWND;      
  begin      
        case     Msg     of      
                WM_COMPAREITEM,     WM_DELETEITEM,     WM_DRAWITEM,     WM_MEASUREITEM,     WM_COMMAND:      
                        begin      
                                case     Msg     of      
                                        WM_COMPAREITEM:     ControlWnd     :=     PCompareItemStruct(lParam).CtlID;      
                                        WM_DELETEITEM:         ControlWnd     :=     PDeleteItemStruct(lParam).CtlID;      
                                        WM_DRAWITEM:                 ControlWnd     :=     PDrawItemStruct(lParam).CtlID;      
                                        WM_MEASUREITEM:     ControlWnd     :=     PMeasureItemStruct(lParam).CtlID;      
                                        WM_COMMAND:                     ControlWnd     :=     HWND(lParam);      
                                else      
                                        Result     :=     0;      
                                        Exit;      
                                end;      
                                Result     :=     SendMessage(ControlWnd,     OCM_BASE     +     Msg,     wParam,     lParam);      
                        end;      
        else      
                ////////////////////////////////////////////////////////////////////////////      
                //zhaoyan     edit     begin      
                {      
                if     (Msg     =     WM_NCDESTROY)     and     (Wnd     =     xParkingWindow)     then     xParkingWindow     :=     0;      
                Result     :=     DefWindowProc(Wnd,     Msg,     WParam,     LParam);      
                }      
                if     (Msg     =     WM_NCDESTROY)     and     (Wnd     =     xParkingWindow)     then      
                begin      
                                xParkingWindow     :=     0;      
                                Result     :=     DefWindowProc(Wnd,     Msg,     WParam,     LParam);      
                end     else     begin      
                                Result     :=     SendMessage(ControlWnd,     OCM_BASE     +     Msg,     wParam,     lParam);      
                end;      
                //zhaoyan     edit     end      
                /////////////////////////////////////////////////////////////////////////////      
        end;      
  end;    
  按上面改后,对原有的在XP和2000系统的IE6环境下,控件无法释放的问题解决了,但随之而来的问题是原来在Tscrollbar中有一个TImage控件进行画图时,出现错拉!造成更大的问题!  
  请继续讨论,结束后,再开新贴给分!

还有:为什么ActiveFormDestroy(Sender:   TObject)事件不能运行?怎样使它能运行?

posted @ 2009-03-02 11:34 delphi2007 阅读(544) | 评论 (0)编辑 收藏

WebBrowser 怎么样可以不保存SESSION?急!!!!!!!!!!!! Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061204152744202.html
WebBrowser   怎么样可以不保存SESSION
posted @ 2009-03-02 11:34 delphi2007 阅读(1514) | 评论 (1)编辑 收藏

使用Delphi控制条码打印机打印条码(系列问题1) Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061204150648203.html
使用Delphi程序控制专用条码打印机打印带有条码的卡片(卡片可以贴在商品上)。本人第一次涉及此类问题,是新手,看了相关的问题列表,没有很清楚的。应为不知该如何下手,希望前辈提供一个思路,如何完成这个小程序。

你的要求也是不清不楚。  
   
  用delphi自带的rave或者fastreport等都可以做条形码报表,  
  然后就是象正常的打印到条形码打印就可以了啊

你用的是什么条码机?我做过,你可以联系我,lsl0201@126.com,我可以免费发给你

posted @ 2009-03-02 11:34 delphi2007 阅读(679) | 评论 (0)编辑 收藏

intraweb 中Iwdbgrid iwdbedit使用 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061204150533204.html
intraweb   中Iwdbgrid中colummns属性设置control关联一个idwdbedit;  
  Iwdbgrid,idwdbedit共用一datasource,这样我在浏览记录时,Iwdbgrid当前记录  
  处就显示idwdbedit,有个IWDBNavigator也关联了相同datasource,但把datasource处与edit状态后,idwdbedit修改数据,提交后,不能更改到数据库中?  
  请各位帮忙说一下是什么原因啊

idwdbedit是iwdbedit敲错了。

建议先看DMEO,你再提问题。

看了得,人家用iwgrid.

用何数据库?  
  是不是主键的问题

posted @ 2009-03-02 11:34 delphi2007 阅读(836) | 评论 (0)编辑 收藏

Web Service的发布问题 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061204135851205.html
请问写出来的exe文件(不是DLL)能否利用IIS发布?  
  如果能怎么发布呢?  
  我写出来的在本机利用webappdbg可以看到,可是利用IIS就会报错  
  错误如下  
  CGI   Error  
  The   specified   CGI   application   misbehaved   by   not   returning   a   complete   set   of   HTTP   headers.   The   headers   it   did   return   are:  
  疑惑中!

因為我公司的一個前輩離開之前用delphi寫過一個webservice,而且是以exe的形式發佈的,http://***.***.***.***/sx/checkuser.exe/soap  
  程序都是這樣調用的。

如果是DLL形式怎麽用IIS發佈啊?

我知道了,是我的電腦出問題了,用同事的電腦就可以正常發佈了

因为   WAD   application  
   
  cgi   要新建工程的  
   
  new   soap   application   第二个   CGI   stand-alone   executable  
 

posted @ 2009-03-02 11:34 delphi2007 阅读(289) | 评论 (0)编辑 收藏

急问:关于idtcpserver收包错位的问题 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061204132847206.html
想用idtcpserver做一个主站软件,接受远程终端通过GPRS功能发送的报文。  
  在IdTCPServerExecute里用AThread.connection.ReadLn读接收到的报文,发现收包全部错位了,相当于是上一条报文的一半和下一条报文的一半被组成一个包收。每条报文都被分割成两半然后分别和上下条报文的一半再去组成新包。  
  是不是因为ReadLn用回车符判断包的结尾,所以报文里一旦出现0D   0A就会认为这个包已经收完?可能这种更适合于ASCII的传输而不适合这种报文的传输。  
  应该怎样解决这个问题呢?还是不能用ReadLn而要用其他方法来收?菜鸟刚接触Delphi,急盼指教,多谢!

readln确实是判断是否有0D   0A,有就是一行结束了  
  如果你的数据内有0D   0A出现,那就建议用SendBuf这种方式来发送(packed)

很感谢你的解答。  
  现在的关键问题是接受,如果发送你说建议用sendbuffer,那么接受用readbuffer么?请问你知道有什么相关的例子程序么?因为以前没用过这个,不清楚它的机制和用法,自己用了一下readbuffer发现会把每个长帧分成几个短帧了,不知道这个是什么原因呢?  
  因为任务急,我又初次用这个很茫然,希望各位不吝赐教,谢谢啦!^_^

一般的发送包体的这种方式,都是有包头的,包头很简单,一般就是需要读取的包的大小,取了包头之后,就按包头里面的大小来取包体。  
  例如:  
  THeader=record(  
          Total_Length:UInt;                   //消息总长度(含消息头及消息体)  
          Command_ID     :UInt;                       //命令标识  
          Sequence_ID   :UInt;                     //消息流水号,顺序累加,步长为1,循环使用  
      end;  
  )  
  ReadBuffer(Header,SizeOf(THeader))//取包头,  
  ReadBuffer(Body,Header.Total_Length-SizeOf(THeader));//根据包头取包体  
 

多谢解答!  
  请问那个包头THeader是自己定义的么?是不是要像你例举的Theader那样根据自己报文的协议定义这么一个record,每次先读包头,然后从包头里找出长度再读到我要的缓冲区里?  
  我现在的程序是:  
  procedure   TTCP_Client.IdTCPServerExecute(AThread:   TIdPeerThread);  
  var  
      connected:   boolean;  
      aIn:array[0..2047]   of   Byte;  
      i,ilen:   integer;  
  begin  
              connected:=   true;  
              for   i:=0   to   2047   do  
                  aIn[i]:=0;  
              AThread.Connection.ReadFromStack;  
              ilen   :=   AThread.Connection.InputBuffer.Size;  
   
              if       ilen<>0       then  
              begin  
                  AThread.Connection.ReadBuffer(aIn,ilen);  
              end;  
  end;  
  这种根据AThread.Connection.InputBuffer.Size来读是不是不对?  
  另外在这个IdTCPServerExecute在ReadBuffer之前还要作其他动作么?我查help里的ReadBuffer他说要用ReadFromStack从而保证读到的buufer里至少有已经定义的size长度的数据,可是我用了上面写的程序很容易死在那里,出现错误,是不是我的用法还是不对呢?  
   
  太菜了,不好意思这么多疑问。  
   
 

你之种读法不是太好,很容易出现合包  
  THeader是自定义的,里面就包含这个包有多大,  
  然后再读取指定的大小,这样,就不会读多或读少  
 

其实你定义好你的传送包数据结构(通常定义为Record),然后直接传送记录就可以了.给你一个我的实例.  
   
  注意,在定义RECORD的域类型是STRING时,设计定长为最大长度255,   如果不够就用定义ARRAY   STRING.  
   
  TArrayString   =   array[0..99]   of   String[255]  
   
  TClient   =   packed   record  
          Name:   string[50];  
          Time:   string[50];  
          Host:   string[50];  
          IP:   string[50];  
          MAC:   string[50];  
          Msg:   TArrayString;  
      end;  
      PTClient   =   ^TClient;  
   
  ......写  
      IdTCPClient.WriteBuffer(FClientSend,   SizeOf(FClientSend),   True);  
   
  ......读  
      AThread.Connection.ReadBuffer(Client,   SizeOf(Client));

那么ReadFromStack该怎么用呢?是否可以用它的返回值来判断是不是已经收到我需要的字节数,比如先判断是不是有收到足够字节的包头,然后再把包头读到buffer里?

posted @ 2009-03-02 11:34 delphi2007 阅读(506) | 评论 (0)编辑 收藏

中间件发布 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061204101854207.html
自己写了个中间件系统,欢迎大家下载评估。  
   
  特点:  
  支持Delphi,C++(cb,   vc,   g++)面向对象开发,  
  跨操作系统平台(win32,linux),  
  跨数据库(oracle,sybase),  
  支持应用服务器类型应用,  
  支持消息转发类型应用,  
  支持服务调用模式开发,也支持纯数据传输模式开发,让你自己灵活定义自己的数据协议  
  服务框架代码自动生成  
  数据存储和数据传输是相对独立的,如果不想用中间件的功能单独用数据存储访问功能也是非常方便的。  
  ......  
  以后会有更多的支持,暂时先做这么多。  
  地址:  
  http://www.abszo.com  
   
  欢迎多提意见。      
 

JF  
  UP

!@#$%^&^  
 

什么也看不到。。。

可以看到的,刷新几次就可以了

jf   jf

自己顶一下

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

我想做一个EMAIL搜索器,如我把www.51job.com 上的邮件搜索下来,如何做,提供思路 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061204101742208.html
我想做一个EMAIL搜索器,如我把www.51job.com     上的邮件搜索下来,如何做,提供思路

做黑客呀。

up

页面分析啊。。。

已经自己搞顶。

噢   这么强?

to:   chwwang()   你好,我遇到跟你一样的问题,能告诉我怎么弄吗?非常感谢

up

楼主能出来透透气吗:)

其实很简单,想知道联系我的qq:564310230

说说吧

posted @ 2009-03-02 11:34 delphi2007 阅读(283) | 评论 (0)编辑 收藏

我有个简单网络传输加密的想法,但不会实现,请高手给出代码 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061203182915209.html
把数据加密后再通过套接字函数发送出去       接收方收到后再解密  
   
   
  所谓加密就是   对数据隔位取反   再把数据调整位置(第一位和第二位对调,第三和第四   等等)。  
   
  但是我刚学delphi     不是怎么把字符串数据转为二进制     请高手给出加密解密代码

请高手现身  
   
  请高手献身

怎么没人??

你出的题难呗,会ASM的都不在。  
   
  字符串好说:  
   
  var  
  s:string;  
  buf:pchar;  
  buf1:array   of   byte;  
  begin  
    s:='hihisdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdf';  
    getmem(buf,length(s));  
    setlength(buf1,length(s));  
    hextobin(pchar(s),buf,length(s));  
    copymemory(@buf1[0],buf,length(s));  
    showmessage(inttostr(buf1[0]));  
    freemem(buf);  
  end;  
   
  取反  
  var  
  a,b:byte;  
  begin  
  a:=$f0;  
  b:=not   a;  
  showmessage(inttostr(b));  
   
  隔位取反和移位的要求比较难以实现,等高手来吧。  
 

多谢楼上的  
   
  我的网络加密     还有数字   特殊字符   汉字     都能处理吗?  
   
  或者不按我出的加密方法     你们有什么变化多端的加密方法??  
   
  给我加密解密函数     最好是每次加密结果都不一样的

procedure   Encode(var   buf;   size:   Integer);  
  var  
      T:   Byte;  
      P1,   P2:   PByte;  
  begin  
      P1   :=   PByte(@Buf);  
      P2   :=   PByte(PChar(@Buf)   +   1);  
      while   Size   >   0   do  
      begin  
          T   :=   P2^;  
          P2^   :=   not   P1^;  
          P1^   :=   not   T;  
          Inc(P1,   2);  
          Inc(P2,   2);  
          Dec(Size,   2);  
      end;  
  end;  
   
  procedure   Decode(var   Buf;   Size:   Integer);  
  begin  
      Encode(Buf,   Size);  
  end;

同样的输入,得到同样的输出。  
   
  好似   不可能每次加密结果都不一样。

用随机密钥加密         在连同密钥和加密之后的密文传过来不就行了?  
   
  但是我不会实现

用加密算法加解密不就行了吗

楼上的     我是初学者  
   
  难道delphi自带了这种函数??     函数名是什么??   在哪个pas里定义的??       要求加密过程利用密钥的         而且可加密特殊字符和汉字

a是加密的数据,如果2,4,6,8取反   b是加密后的  
  b:=   a   or   ((not   a)and   85)  
 

上面的错了,这个  
   
  a是加密的数据,如果2,4,6,8取反   b是加密后的  
  b:=   (a   and   170)   or   ((not   a)and   85)  
  CHR也是字节值,所以有ORD()可以转换起ASCII值  
  //==================================================  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
  a,b:integer;  
  begin  
      a:=100;  
      b:=(a   and   170)   or   ((not   a)and   85)   ;  
      edit1.Text   :=inttostr(b);  
  end;

function   encode(a   :   byte):byte  
  var   b   :   byte;  
  begin  
      b   :=   a   xor   85;   //隔位取反  
      Result   :=   (b   shl   1)   and   170   or   (b   shr   1)   and   85;     //邻位对调  
  end;

posted @ 2009-03-02 11:34 delphi2007 阅读(392) | 评论 (0)编辑 收藏

挑战高手智慧,如何取得InnerHTML里面的Element并赋值 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061203153545210.html
目标网页内容摘要如下:  
   
  <script>  
  var   BookCode_str='识别码:<INPUT   name=BookCode   size=10   maxlength=4>请输入图书编码<br><img   id=Book_img   src="GenBookCode.asp?ID=DSFSCDSC008296CB84467F56B">';  
   
  function   MyOnFocus()  
  {  
          if(document.getElementById('BookC').innerHTML==null   ||   document.getElementById('BookC').innerHTML==''){  
                document.getElementById('BookC').innerHTML=BookCode_str;  
          }  
      }    
   
  </script>  
   
  <table   width="95%"   border="0"   cellspacing="1"   cellpadding="3"   align="center"   class="f9"   >  
  <tr   >    
  <td   valign="top"   nowap>书名:</td>  
  <td   width="90%">  
  <input   type="text"   name="BookName"   size="60"   value=""   onfocus="MyOnFocus()">  
  </td>  
  </tr>  
  <tr>    
  <td   valign="top"   nowap>简介:</td>  
  <td   width="90%">    
  <textarea   name="BookDetail"   cols="65"   rows="8"   onfocus="MyOnFocus()"></textarea>  
  </td>  
  </tr>  
   
  <tr>    
  <td   vAlign=middle   align=left   colspan=2><div   id=BookC></div></td>     //添加图书条形码  
  </tr>  
   
  <tr>    
  <td   width="93%">    
  <input   type="submit"   name="Submit3"   value="图书入库"></td>  
  </tr>  
   
  </table>  
   
   
  因为前面的开发人员走了,联系不上,所以存在这么一个问题:  
   
  图书的编码是必须   先点标题以后,才通过MyOnFocus,往ID为BookC的DIV里面插入一个   条形码图片  
   
  我现在编写程序,如何自动往新增加的ID为BookCode的Input赋值?  
   
   
  o   :=   WebBrowser_AddBook.oleobject.document.all.item('BookName',0);   //名称  
  o.value   :='书名';  
   
  o   :=   WebBrowser_AddBook.oleobject.document.all.item('BookDetail',0);   //简介  
  o.value   :='简介';  
     
  o   :=   WebBrowser_AddBook.oleobject.document.all.item('BookCode',0);     //出错  
  o.value   :='123456';  
   
  到给编码赋值的时候,立马出错。小弟只有100分了,故给出99分,请求各位大虾来救我!  
 

提前!!自己顶上去

//先把对象创建出来  
   
  var  
      o:   OleVariant;  
  begin  
      o   :=   WebBrowser_AddBook.OleObject.Document.All.Item('BookName',   0);   //名称  
      o.value   :='书名';  
      o   :=   WebBrowser_AddBook.OleObject.Document.All.Item('BookDetail',   0);   //简介  
      o.value   :='简介';  
      WebBrowser_AddBook.OleObject.Document.parentWindow.ExecScript('MyOnFocus()');   //<<  
      o   :=   WebBrowser_AddBook.OleObject.Document.All.Item('BookCode',   0);     //出错  
      o.value   :='123456';  
  end;  
 

zswang(伴水清清)(专家门诊清洁工)真的是专家哦!  
   
  基本解决问题。   不过存在一个小疑问:  
   
    WebBrowser_AddBook.OleObject.Document.parentWindow.ExecScript('MyOnFocus()');   //<<  
      o   :=   WebBrowser_AddBook.OleObject.Document.All.Item('BookCode',   0);     //出错  
      o.value   :='123456';  
   
  之后,我立马   submit,   没有问题。如果不这样,这个书的编码自动就变成空,不知道为何。  
   
   
  ————————————————另外,如何禁用网页代码里面的一个特定的Script?请教  
 

posted @ 2009-03-02 11:34 delphi2007 阅读(439) | 评论 (0)编辑 收藏

如何修改 Cookies使其永远不会到期? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061203144744211.html
比如CSDN,2周后即到期要重新登录.  
  有什么办法可以保持COOKIES使其不会过期?  
   
  有效解决问题者,另开贴独送200分  
   
 

将Cookies的到期时间设为当前时间+200年就行了被

问题是如何设置

C:\Documents   and   Settings\username\Cookies  
  用UE(支持DOS文件)打开username@csdn[1].txt  
  第一行为CookieName  
  第二行为CookieValue  
  第三行为站点  
  第四行安全标记  
  第五行为过期时间   日期部分   《〈〈〈〈关键修改这一行  
  第六行为过期时间   时间部分  
  第七行为最后修改时间   日期部分  
  第八行为最后修改时间   时间部分  
  *为分隔符  
   
  将第五行修改为:35999999  
  >2090年  
   
  uid_www  
  xxxxxxxxxxxxxxxxxxxxxxxxx  
  csdn.net/  
  1536  
  560450176  
  35999999  
  3145255152  
  29810013  
  *  
  cnt_uid_www  
  xxxxxxxxxxxxxxxxxxxxxxxxx  
  csdn.net/  
  1536  
  560450176  
  35999999  
  3939655712  
  29810028  
  *  
  ...

老大,试了,没有用.  
  比如gd.vnet.cn我的星空,看电影不想每次都登录,改了cookies至2090年,  
  结果还是一样,过几个小时再访问仍要求登录.

那就可能是这个网站将保留了时间戳

有什么解决办法吗?  
  我是用twebbrowser打开的,可否在内容被IE解释执行之前修改相关代码实现?

up  
   
   
   
   
   
   
   
   
 

算了,结贴

posted @ 2009-03-02 11:33 delphi2007 阅读(439) | 评论 (0)编辑 收藏

有个服务器端程序一直运行在服务器上,如何接收来自网页的请求,让他执行一些操作呢? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061203134441212.html
有个服务器端程序一直运行在服务器上,如何接收来自网页(jsp)的请求,让他执行一些操作呢?  
   
  想用端口监听的方式,但一直没有一个思路?  
   
 

晕,网页上的请求还不是要发到服务器上,让网页的后台程序处理嘛,让后台调用不就可以了

无法思路,只能路过

posted @ 2009-03-02 11:33 delphi2007 阅读(353) | 评论 (0)编辑 收藏

?请问怎样将excel表格中的时间格式读取为字符串格式? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061203005308213.html
请问怎样将excel表格中的时间格式读取为字符串格式?

全部都是当字符串读取的

posted @ 2009-03-02 11:33 delphi2007 阅读(603) | 评论 (0)编辑 收藏

WebBrowser中url 连接问题 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061202200134214.html
实现:点了button以后发送   edit1.text   +   '后面的一串'     到web服务器  
   
  后面一串如下:  
   
  /Region.asp?Country=tt&City=fucka&Province=bug'   and   1=2   union   select   username   from   Admin   where   1<2   and   '1'='1  
   
  我的代码  
   
  procedure   TForm1.Button2Click(Sender:   TObject);  
  begin  
  self.WebBrowser1.Navigate(edit1.Text+'/Region.asp?Country=tt&City=fucka&Province=bug''+'and'+'1=2'+'union'+'select'+'username'+'from'+'Admin'+'where'+'1'+'<'+'2'+'and'+'1'='1);  
  end;  
   
  提示有错误:Missing   operator   or   semicolon  
   
  望朋友指点

如果你的URL就是那样的(我没有看出提交给ASP的那些字串是什么意思),那么,可以按下面这样:  
  var   s:string;  
  begin  
      s:=s+'/Region.asp?Country=tt&City=fucka&Province=bug';  
      s:=s+quotedstr('   and   1=2   union   select   username   from   Admin   where   1<2   and   ');  
      s:=s+'1';  
      s:=s+quotedstr('=');  
      s:=s+'1';  
      WebBrowser1.Navigate(edit1.Text+s);  
  end;

多谢指点,这个字符串是测试注入的

posted @ 2009-03-02 11:33 delphi2007 阅读(350) | 评论 (0)编辑 收藏

WEBCONNECTION在IE7下传输超时! Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061202000500215.html
我做的一套三层软件,使用WEBCONNECTION连接,已成品化很长时间.昨天装了下IE7测试兼容性,发现调用运行时间超过半分钟的方法出现超时错误.麻烦了,不能不让用户升级IE7吧.同样用WEBCONNECTION的朋友们测测你们的系统,是否调整IE参数可解决此问题.

听说一些老网站用IE7浏览也会有问题

solved

posted @ 2009-03-02 11:33 delphi2007 阅读(262) | 评论 (0)编辑 收藏

Delphi如何使用ssh协议编程 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061201181116216.html
如何通过SSH协议访问Linux\Unix服务器上的某个文件的内容?  
   
  多谢了!

看看   Indy   组件系列

..推荐   idny   ..而且你还要又服务器的   一定权限..

indy?  
  可以吗?有没有相关的文档啊?

偶的本刚装了vista,delphi6不能正常运行,没有验证,如果可以,就搞个虚拟机试试了  
   
  谢楼上两位

噢   都解决了?   看来偶来晚了~   呵呵   :)

up

我看了一下indy没有处理ssh协议的呀,请楼上的朋友明示!找了个IP*Works   v6的控件,可惜是要花银子买的!

顶顶顶

Indy没SSH的  
  SSH用的人少,也是只怕得花费解决的  
  记得BlackBox这个也支持SSH,都是要收费的

看看能不能用OpenSSH这个库吧

SSH有很多开源的c/c++代码(openssh/puttty/filezilla),将它写成DLL供delphi用,不过工作量的确很大

posted @ 2009-03-02 11:33 delphi2007 阅读(1080) | 评论 (0)编辑 收藏

在线等:串行口通讯上位机的数据发送问题。 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061201145728217.html
目前做一个RS232串口切换器的上位机控制程序,用户要求:  
  1.波特率:4800  
  2.工作方式:一个起始位0,8个数据位,1个停止位1,共10位  
  3.控制流程:首先向切换器发数据#0aah;然后向切换器发数据#55h;发控制字,高四位为0,低四位为控制字,例控制字为#55h,表示第五路信号输出。  
   
  假如切换器有8个通道,如何写代码以控制这些通道的切换?采用SPCOMM控件。  
   
  由于以前没做过这方面的东西,感觉很茫然。谢谢大家!

UP

到这儿下载“串口调试小助手”,看看源码,自己多试试,肯定有收获的  
  http://www.2ccc.com/search.asp?KeyWord=spcomm

不是很难。

设置好串口属性,然后按协议组织数据,用WriteCommData发送即可

建议用   ComDrv32,有   demo

posted @ 2009-03-02 11:33 delphi2007 阅读(348) | 评论 (0)编辑 收藏

急求解决办法:如何用ics控件中的ftpserver控件实现文件的多线程下载???! Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061201142358218.html
我利用ics中的ftpserver控件写了一个ftp服务器,所有一切功能都正常,就是在文件下载时,常常导致我的服务器应用程序界面动弹不得,因此,想在一个线程中来发送下载数据,但是不知道怎么实现,希望哪位大侠帮帮忙,送上100分,聊表感谢之心!不胜感激!

沙发~  
  ICS用的人也不如Indy的多~~

只用过indy,呵呵

posted @ 2009-03-02 11:33 delphi2007 阅读(458) | 评论 (0)编辑 收藏

仅列出标题
共34页: First 6 7 8 9 10 11 12 13 14 Last