标签: delphi-7

是否有可能获得指针在Delphi 7中指向的类型的大小?

我希望在以下函数中获得任何"记录"类型的大小.但似乎它不起作用:

function GetDataSize(P : Pointer) : Integer;
begin
  Result := SizeOf(P^); // **How to write the code?**
end;
Run Code Online (Sandbox Code Playgroud)

例如,后续记录的大小为8个字节

SampleRecord = record
 Age1 : Integer;
 Age2 : Integer;
end;
Run Code Online (Sandbox Code Playgroud)

GetDataSize(@a)总是返回1(当然,a是SampleRecord类型的变量).我该怎么办?

我注意到Delphi有一个程序过程New(var P:Pointer),可以分配内存块对应P指向的类型的大小.怎么能达到这个尺寸?

delphi memory-management delphi-7

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

创建一个简单的Delphi IDE专家

我想为Delphi 7创建一个简单的IDE Expert,如下图所示:

替代文字

我已经验证了这个问题的链接,但OTA Api新闻组已经死了,大部分文档都不可用(断开的链接).有人可以给出一个起点吗?

ide delphi delphi-7 toolsapi

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

在主动拨号上的IE中设置Internet代理或在delphi中设置vpn连接

我想用Delphi代码为IE设置代理操作连接.我测试这段代码:

Procedure SetProxy(const Server: String);
var
  Reg : TRegistry;
begin
  Reg := TRegistry.Create;
  Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Internet Settings',False);
  Reg.WriteString('ProxyServer',Server);
  Reg.WriteBool('ProxyEnable',True);
  Reg.CloseKey;
  Reg.Free;
  InternetSetOption(0, INTERNET_OPTION_SETTINGS_CHANGED, 0, 0);
end;
Run Code Online (Sandbox Code Playgroud)

但它改变了IE Internet Option中的LAN设置.

有人有解决方案吗?

附加: 如何检索连接名称列表?

delphi proxy internet-explorer delphi-7 setting

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

Delphi中的Combobox Style'csDropDownList'

我在delphi 7中创建了一个表单,并在其上添加了一个组合框.组合框包含项目列表.我不希望用户可以输入值到Combobox,所以我已经设置

combobox.style := csDropDownList;
Run Code Online (Sandbox Code Playgroud)

但我想使用的代码,combobox.text := 'New Item';但它不起作用.请注意,我想要显示的文本不在项目列表中,我不想在那里添加它.请问有什么解决方案吗?

delphi combobox delphi-7

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

使用主文件夹中的单位

我有一个简单的问题,我在主文件夹中有一些单位,我的项目位于子文件夹,我想使用主文件夹中的单位.我用过这个:

uses
ACMIN in '..\ACMIN.pas'
Run Code Online (Sandbox Code Playgroud)

我收到错误:找不到文件ACMIN.dcu.

delphi delphi-7

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

Delphi TClientDataSet找到问题

我使用Delphi7,MS VistaDevart's dbExpress驱动程序(版本4.70).我放弃a TSQLConnection,a TSQLTable(tabA),a TDataSetProvider,a TClientDataSet(cdsA),a DataSource和a DBGrid.

我通过图形设计工具进行了所有设置.一切正常,当我打开时cdsA,我可以看到网格中的所有数据.这是我的代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  fields, values: string;
begin
  cdsA.Close;
  cdsA.Open;
  fields := 'fielda;fieldb';
  values := Edit1.Text+';'+Edit2.Text;
  cdsA.SetKey;
  cdsA.Locate(fields, values, [loCaseInsensitive]);
end;
Run Code Online (Sandbox Code Playgroud)

fieldA并且fieldB存在于表中并且也被定义cdsA.Fields.当我执行此代码时,Locate指令生成异常EVariantInvalidArgError ... Invalid argument.我想知道什么是错的.TIA.

弗朗切斯科

delphi tclientdataset delphi-7 locate

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

在浏览TOpenPictureDialog中的非图像时,如何避免调试器停止我的程序?

我正在使用TOpenPictureDialog来浏览图像.在调试模式下,当我在此对话框中浏览图片时,我碰巧在快捷方式(.lnk)上单击(而不是双击),调试器会中断我的程序,因为它捕获异常,说它不是有效文件格式.

怎么克服这个?我知道这只是在调试时间,并且在最终的EXE中没有任何问题,但它变得非常烦人,因为我希望能够通过这些快捷方式.

delphi dialog shortcut delphi-7

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

更改密码Delphi v7

Delphi v7

此代码旨在允许用户更改其密码.它似乎正确执行,但新密码未保存在密码数据字段中.我一定做错了什么,但我看不出来.

procedure TForm4.btnPswordClick(Sender: TObject);
var
  I: integer;
begin
tblLogin.First;;
for I := 0 to tblLogin.RecordCount  do
Begin
If tblLogin.FieldByName('Username').Value = Edit1.Text then
if tblLogin.FieldByName('Password').Value = Edit2.Text  then
sign2.Visible := True; //Test in this case tells the application to make Label1  
visible if the //username and password are correct
tblLogin.Next;
end;
I:= I+1;  //ends search loop of records so program can move on
If sign2.Visible = False then
begin
MessageDlg('Error Username, or Password not correct',
mtConfirmation, [mbCancel], 0);
end …
Run Code Online (Sandbox Code Playgroud)

delphi passwords delphi-7

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

使用tlist在完整Delphi代码中泄漏内存

附件是我遇到的内存泄漏示例的完整代码.有人可以告诉我如何清理这个内存泄漏.如果您创建一个表单并在其上放置一个按钮,然后将下面的代码粘贴到.pas文件中,则可以编译此代码.提前感谢您提供的任何帮助.

unit LeakForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type PrintRecord = record
  PrintString1,
  PrintString2,
  PrintString3,
  PrintString4,
  PrintString5,
  PrintString6 : string;
  PrintFloat1,
  PrintFloat2,
  PrintFloat3  : Double;
end;
PrintPointer = ^PrintRecord;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    MyPrintLst : TList;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure ClearTList(Var List : TList);
Var …
Run Code Online (Sandbox Code Playgroud)

delphi memory-leaks delphi-7

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

请使用export和stdcall关键字来区分使用delphi7导出Dll中的函数

uses
  SysUtils,
  Classes;

{$R *.res}
function add(Value1:integer;value2:integer):integer;stdcall;
begin
  Result:=Value1+value2;
end;

function subtract(Value1:integer;value2:integer):integer;stdcall;
begin
  Result:=Value2-value1;
end;

function multiply(Value1:integer;value2:integer):integer;stdcall;
begin
  Result:=Value1*value2;
end;

function divide(Value1:integer;value2:integer):integer;stdcall;
begin
  Result:=Value2 div value1;
end;

function check(Value1:integer;value2:integer):Boolean;stdcall;
begin
  if(Value2>value1)then
    Result:=True
  else
    Result:=False;
end;

exports add,subtract,multiply,divide,check;
Run Code Online (Sandbox Code Playgroud)

这是我的DLL代码.即使我给出口它是有效的.我可以知道这两个关键字的使用之间的区别.

delphi delphi-7

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