标签: delphi-2007

Indy 9和Indy 10有什么区别?

我负责将Delphi 2007应用程序移植到C#,并且完全没有使用Delphi的经验.我想知道Delphi包括的两个Indy版本之间有什么区别--Indy 9和Indy 10.此时我甚至不知道什么是Indy.有人可以帮我吗?它们只是Delphi库的不同版本吗?使用其中一个有什么含义?

谢谢!

delphi indy delphi-2007

3
推荐指数
1
解决办法
5413
查看次数

在同一台计算机上安装Rad Studio 2007和Rad Studio 2010

我想在已经安装了Rad Studio 2007的机器上安装Rad Studio 2010,存在一些兼容性问题?

提前谢谢,再见.

delphi delphi-2007 delphi-2010

3
推荐指数
1
解决办法
1118
查看次数

找出TGridPanel内部控件的位置

我怎样才能找到TGridPanel里面控件的位置(行和列索引)?我想对按钮的数量使用常见的OnClick事件,并且需要知道按钮的X,Y位置.

我正在使用Delphi 2007.

delphi vcl delphi-2007 tgridpanel

3
推荐指数
1
解决办法
1849
查看次数

Delphi:类中的记录

以下情况:

type
  TRec = record
    Member : Integer;
  end; 

  TMyClass = class
  private
    FRec : TRec;
  public
    property Rec : TRec read FRec write FRec;
  end;
Run Code Online (Sandbox Code Playgroud)

以下不起作用(左侧不能分配),这是可以的,因为它TRec是一个值类型:

MyClass.Rec.Member := 0;
Run Code Online (Sandbox Code Playgroud)

在D2007中,虽然以下内容有效:

with MyClass.Rec do
  Member := 0;
Run Code Online (Sandbox Code Playgroud)

不幸的是,它在D2010中不起作用(我认为它在D2009中也不起作用).第一个问题:为什么?故意改变了吗?或者它只是其他一些变化的副作用?D2007的解决方法只是一个"错误"吗?

第二个问题:您如何看待以下解决方法?使用安全吗?

with PRec (@MyClass.Rec)^ do
  Member := 0;
Run Code Online (Sandbox Code Playgroud)

我在这里谈论现有代码,因此必须进行的更改才能使其工作应该是最小的.

谢谢!

delphi records delphi-2007 delphi-2010

3
推荐指数
1
解决办法
3842
查看次数

使用Windows 7更改了文件流的行为?

我编写了一个实用程序来搜索异常文件的日志文件,它在Vista 64位上运行良好.现在我已经升级到Windows 7 64位,有时在读取文件流时会永远挂起.我认为它只有在日志文件处于活动状态并且用户写入它时才会挂起.但是在我使用fmShareDenyNone标志之前,这样可以正常工作.我使用Delphi 2007.任何想法我可以改变以使其工作?

以下是搜索日志文件目录的整个方法:

procedure TfrmMain.Refresh;
var
  FileData : TSearchRec;  // Used for the file searching. Contains data of the file
  vPos, i, PathIndex : Integer;
  vCurrentFile: TStringList;
  vDate: TDateTime;
  vFileStream: TFileStream;
begin
  tvMain.DataController.RecordCount := 0;
  vCurrentFile := TStringList.Create;
  memCallStack.Clear;

  try
    for PathIndex := 0 to fPathList.Count - 1 do                      // Loop 0. This loops until all directories are searched through
    begin
      if (FindFirst (fPathList[PathIndex] + '\*.log', faAnyFile, FileData) = 0) then
      repeat                                                      // Loop 1. This loops …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2007

3
推荐指数
1
解决办法
776
查看次数

Indy 9和Windows Server 2003之间的不兼容性?

我在某些Windows 2003服务器上遇到Delphi应用程序的问题.它使用webservice调用来连接另一台服务器并来回传输数据.一旦应用程序进入Authenticate方法,应用程序就会死亡.该应用程序已经使用Win Server 2003在以前的盒子上工作多年,但它不适用于新建的机器.这些机器在大多数情况下都以相同的方式设置,但显然有一些配置设置不同,我无法追踪.此外,虽然在对Authenticate的调用中错误变得明显,但是数据包嗅探证明应用程序和它试图联系的服务器之间没有任何事情发生,这加强了我的想法,即在设置连接的早期就会死亡.我无法在本地复制错误,因此我无法在调试器中单步调试应用程序.有关为什么Indy 9 Delphi网络连接可能会无声地失败的任何想法?

delphi dep soap delphi-2007 delphi-2005

3
推荐指数
1
解决办法
2875
查看次数

如何确保对话框始终位于主窗口的前面

我还没有找到最佳解决方案.我有一个非模态对话框,可以通过应用程序中的热键在无限制实例中打开.甚至对话框本身也可以打开一个新实例.我希望这些对话框始终位于主应用程序窗口的前面.我尝试过几件事.

  • 将FormStyle设置为fsStayOntop.这有效但有一个优点,即对话框将位于所有窗口的前面,甚至是其他应用程序.我只希望它在我的主窗口前面.
  • 将PopupMode设置为pmAuto.这也适用于一个对话框打开另一个对话框的情况.如果第一个对话框关闭,则会自动关闭第二个对话框.这是不可接受的.
  • 使用表单的默认属性.单击主窗口后,打开的对话框就在主窗口后面.

任何其他建议:-)

delphi dialog nonblocking delphi-2007

3
推荐指数
1
解决办法
2144
查看次数

D2007中的指针算法如何使其工作?

在Delphi 2007中编译Embarcadero VirtualShellTools时:http://embtvstools.svn.sourceforge.net/

function TShellIDList.InternalChildPIDL(Index: integer): PItemIDList;
{ Remember PIDLCount does not count index [0] where the Absolute Parent is     }
begin
  if Assigned(FCIDA) and (Index > -1) and (Index < PIDLCount) then
    Result := PItemIDList( PByte(FCIDA) 
                         + PDWORD(PByte(@FCIDA^.aoffset)
                                  +sizeof(FCIDA^.aoffset[0])*(1+Index))^)
  else
    Result := nil
end;
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

[Pascal Error] IDEVirtualDataObject.pas(1023):E2015运算符不适用于此操作数类型

这段代码有什么问题,我需要做什么样的类型转换才能真正实现它?

我在以下(不太复杂)的例程中得到了同样的错误:

function TShellIDList.InternalParentPIDL: PItemIDList;
{ Remember PIDLCount does not count index [0] where the Absolute Parent is     }
begin
  if Assigned(FCIDA) then
      Result :=  PItemIDList( PByte(FCIDA) + …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2007

3
推荐指数
1
解决办法
479
查看次数

Delphi 2007和更新的Indy 10

我正在发送带有英文文件名的文件(doc,pdf,xls),但是当我发送带有希腊文件名的文件时,我正在服务器端上面????????? 文件名和错误消息的字符Socket Error 10053,软件导致连接中止.是否有解决此类问题的方法.

码:

procedure TForm1.LoadFileButtonClick(Sender: TObject);
begin
  OpenDialog1.Filter := 'All Files (*.*)';
  OpenDialog1.FilterIndex := 1; 
  if OpenDialog1.Execute then
  begin
    Edit1.Text := ExtractFileName(OpenDialog1.FileName); 
    Edit3.Text := OpenDialog1.FileName; 
    Fstream := TFileStream.Create(OpenDialog1.FileName, fmopenread); 
    Edit2.Text := inttostr(Fstream.Size);
    Fstream.Position := 0;
    FreeandNil(FStream);
    //Fstream.Free;
  end;
end;

procedure TForm1.SendFileButtonClick(Sender: TObject);
var
  IncommingText: string;
begin
  if (opendialog1.filename<>'') and (CheckBox1.Checked = True) then begin
    IdTCPClient1.iohandler.writeln(edit1.text + '@' + edit2.text + ';' + edit3.text + ',');
    Sleep(2000);
    try
      IdTCPClient1.IOHandler.largestream:=true;
      Fstream := TFileStream.Create(OpenDialog1.FileName, fmopenread);
      IdTCPClient1.IOHandler.Write(Fstream, 0 ,true);
    finally
      Fstream.Position := …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2007 indy10

3
推荐指数
1
解决办法
2924
查看次数

用delphi代码验证密码

希望实现一个最终用户对话框,要求他们创建自己的密码.

长度必须为9个字符.1个字符必须是大写,1必须是小写,1必须是数字,['0'..'9'],一个必须来自一组6个预定义的ascii字符,如此.[ '!', '#', '%', '&', '*', '@'].

完成了这个.和工作.但是,我想要做的是使用onchange事件提供可见验证,如果满足所有要求,则将编辑框的颜色更改为绿色,否则更改为RED.对9个字符长度进行调整很容易,但是要检查9个不同的字符,以确保至少有1个上部,1个下部,1个数字和1个预定义,这证明有点困难.有人可以帮忙吗?谢谢.

这是代码:

procedure TPasswordForm.edtPassword1Change(Sender: TObject);      
  begin
    if Length(edtPassword1.Text <> 9 then
       edtPassword1.Color := clRed
    else
       edtPassword1.Color := clLime;
  end;
Run Code Online (Sandbox Code Playgroud)

delphi passwords delphi-2007 validating

3
推荐指数
1
解决办法
1732
查看次数