如何在 Pascal 中使用网络套接字? xad\xc2\xx xc2\xad\xc2\xad\xc2\xad\xc2\xad\xc2\xad\xc2\xad\xc2\xad\xc2\xad\xc2\xad\ xc2\xad\xc2\xad\xc2\xad\xc2\ xad\xc2\xx xc2\xd\xc2\xd\xc2\xd
\n如何在 Inno Setup Pascal 脚本中迭代 MULTI_SZ 字符串?例如超过返回的值RegQueryMultiStringValue
我试图用帕斯卡(freepascal)定义一些东西。与在 C++ 中一样,您可以像这样传递变量定义宏:
#define REP(i,k) for(int i=0; i<k; i++)
Run Code Online (Sandbox Code Playgroud)
你怎么能用帕斯卡做到这一点?
我在第一行添加了{$MACRO ON}命令,因此它可以运行正常的定义,而不会出现类似{$define lala:='hello world'}.
但是当我尝试{define lala(i):=i}该程序时出现错误。
如何在 Pascal 定义中传递变量参数?
我正在使用Delphi XE3.在研究了Delphi之后 - 维护对象的自引用之后,我理解类类型的变量实际上是引用对象的指针.
因此,我编写以下代码来测试它,如下所示:
TMyClass = class
public
constructor Create(Name: string);
destructor Destroy;
function GetName: string;
private
FName: string;
end;
PMyClass = ^TMyClass;
constructor TMyClass.Create(Name: string);
begin
FName := Name;
end;
destructor TMyClass.Destroy;
begin
end;
function TMyClass.GetName: string;
begin
Result := FName;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Item: TMyClass;
P: PMyClass;
begin
Item := TMyClass.Create('Jim');
P := PMyClass(Item);
OutputDebugString(PWideChar(Format('Address of object: %x; Address of variable Item: %x; Value of P: %x;',
[Integer(Item), Integer(@Item), Integer(P)])));
OutputDebugString(PWideChar(Format('Name is %s', …Run Code Online (Sandbox Code Playgroud) 鉴于以下代码未设置返回值,返回什么?
Function MyFunction : Integer;
begin
end;
Run Code Online (Sandbox Code Playgroud) 当我点击正在运行的控制台时,它会冻结应用程序,直到我完成选择,
我找到了如何使用“SetConsoleMode”在多种语言中禁用它,但找不到 Delphi 的代码
“应用程序”是 VCL 的一部分,因此不是线程安全的(可能用于维护它拥有的非线程安全组件列表)。
我正在处理的项目有几个实例,其中 Application 设置为 Owner,而 Self 不是一个选项(类方法)。鉴于变量在此函数结束时被释放,我想改为传递“nil”。
假设有人忘记释放应用程序拥有的变量:
当应用程序关闭时,内存被释放。但我也读到 Windows 会跟踪分配给每个进程的内存。因此,理论上,如果未释放 nil 拥有的变量,Windows 将在应用程序/进程终止时释放它。
那么,将所有者设置为 Application 而不是 Nil 有什么好处?
以下问题讨论了释放 nil 拥有的 vars 的责任,但仅限于此:
我在发出 SQL 语句时遇到问题。我知道英文值本身应该是一个字符串,我已经尝试过,但它一直向我抛出这些错误之一
procedure TfrmPetersonGroup.btnEnglishClick(Sender: TObject);
var
sSqlQuery:string;
begin
//2.4
dmoBandB.qryQuery.SQL.Clear;
sSqlQuery:='DELETE FROM tblClients WHERE Nationality =' + ' English';
dmoBandB.qryQuery.SQL.Text := sSqlQuery;
dmoBandB.qryQuery.active := true;
end;
Run Code Online (Sandbox Code Playgroud) 所以基本上我有这个函数返回:3.00000000000E000
function lang():extended;
begin
wynik := 0 ;
counter := 1;
temp :=1;
input := 2;
for i:= 1 to 4 do
begin
for k:= 1 to 4 do
begin
if i = k then counter := counter
else temp := temp * ((input - a[k]) / (a[i] - a[k]));
end;
wynik := wynik + temp*f[i];
temp := 1;
end;
Result := wynik;
end;
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用 FloatToStr 在应用程序屏幕上打印它时,我只得到 3。
procedure TFormCalculator.Button1Click(Sender: TObject);
begin
Edit1.Text := FloatToStr(lang());
end;
Run Code Online (Sandbox Code Playgroud)
如何保留结果的长版本?
我很想知道某些行末尾显示的代码标记(参见屏幕截图)是否在任何地方进行了解释或记录(对于 RAD Studio 10.4)。我注意到,当这些项目以单位名称为前缀时,前 3 个(for Halt、Continueand )将会消失。BreakSystem.
至于raise,我不清楚红色向上小箭头的含义或应如何解决。代码编译良好,没有错误、警告或提示。
procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
begin
if False then Halt(99);
for I := 0 to 2 do
begin
if I = 0 then Continue;
if I = 1 then Break;
end;
try
Transaction.StartTransaction;
//update database
Transaction.Commit;
except
Transaction.Rollback;
raise;
end;
end;
Run Code Online (Sandbox Code Playgroud)
pascal ×10
delphi ×7
code-editor ×1
console ×1
continue ×1
delphi-xe2 ×1
freepascal ×1
ide ×1
inno-setup ×1
lazarus ×1
macros ×1
memory ×1
preprocessor ×1
scripting ×1
sockets ×1