我有一个家庭成员,他非常依赖Borland的这个过时的帕斯卡实施.
他最近购买了一台带有Windows 7(64位)的新笔记本电脑,我能够通过DOSBox帮助他获得旧的Turbo Pascal环境,但这并不理想.它很慢,有点深奥.
他确实认识到这种环境已成为过去,但他对此感到满意并且不想改变.
我使用Gecko SDK,这是一个允许您查看网页的组件.
我使用这个组件来创建一个html编辑器.
关闭编辑网页时会发生此问题.
问题是箭头键和选项卡不适用于我的组件.我试图找到这个问题的答案,但我找不到.我在这里找到了一个曲目,但功能不起作用.
功能Movement (dx, dy)不存在.谢谢你帮我解决这个问题.
Procedure Tform1.TraiteMessages(Var msg : TMsg; Var Handled: boolean);
var
dx, dy : integer;
begin dx: 0; dy := 0;
With msg do
begin
IF Message = WM_KEYDOWN then
Case wparam of
VK_LEFT : dx := -1;
VK_RIGHT : dx := 1;
VK_UP : dy := -1;
VK_DOWN : dy := 1;
end;
end;
IF (dy = 0) AND (Dx = 0) then Handled := false else
begin
handled …Run Code Online (Sandbox Code Playgroud) 假设我想从终端读取同一行上的三个变量,我想使用read函数.我会用示例输入编写类似下一个代码的内容:
10 929.1 x
var a:integer;
var b:real;
var c:char;
begin
read(a,b,c);
writeln (a, ' ', b, ' ' ,c);
end.
Run Code Online (Sandbox Code Playgroud)
我永远不会读取字符"c".我必须像这样解决它:
var a:integer;
var b:real;
var c:char;
var d:char;
begin
read(a,b,d,c);
writeln (a, ' ', b, ' ' ,c);
end.
Run Code Online (Sandbox Code Playgroud)
现在,char d将读取空格,char c将具有正确的值.
此外,如果我只想读取三个字符,输入必须是"zyx",否则我将不得不使用另一个读取来修复"xy z"的问题.
它与数字完美配合.它将读作"10 9 2"而无需额外读取.
有谁知道这背后的原因?(我用fpc和gpc尝试过)
谢谢
我需要将一些代码从FreePascal移植到C.我是一名专业的C开发人员但对Pascal一无所知.大多数代码都可以轻松移植,但是一行代表让我很头疼.究竟应该做什么:
New(newBack);
curBackPtr^ := newBack;
curBackPtr := @(newBack^.next);
Run Code Online (Sandbox Code Playgroud)
让我感到困惑的是,在没有被访问的情况下newBack分配给它curBackPtr并在其之后分配的事实.那么第一个任务是不是多余的,可以安全地删除?或者我在这里遗漏了什么?newBack.nextcurBackPtrcurBackPtr
我已经使用delphi数据绑定向导和我的xml文件,一切都编译并运行正常.
我的表格上有3个组合框.制造商,型号和年份.
使用FormCreate上的以下代码填充制造商.
procedure TfrmMain.FormCreate(Sender: TObject);
var
RGearing : IXMLracegearingType;
i : Integer;
begin
// Load XML Document into Memory
RGearing := Getracegearing(XMLDocument1);
// Populate Manufacturer combobox
for i := 0 to RGearing.Car.Count-1 do
begin
cbManufac.Items.Add(RGearing.Car[i].Manufacturer);
end;
// Copy current selected Manufacturer to string variable
varManufac := cbManufac.ListItems[(cbManufac.ItemIndex)].Text;
end;
Run Code Online (Sandbox Code Playgroud)
我的问题是如何根据所选的当前制造商填充模型组合框.
这是随附的XML文件
<?xml version="1.0" encoding="UTF-8"?>
<gearing>
<car>
<id>1</id>
<manufacturer>Ford</manufacturer>
<model>Test 1</model>
<year></year>
</car>
<car>
<id>2</id>
<manufacturer>Ford</manufacturer>
<model>Test 2</model>
<year></year>
</car>
<car>
<id>3</id>
<manufacturer>Honda</manufacturer>
<model>Test 1</model>
<year></year>
</car>
<settings>
<form_height></form_height>
<form_width></form_width>
</settings> …Run Code Online (Sandbox Code Playgroud) 本质上,这是关于Pascal(FPC)中的递归数据结构的问题.正如我想在SICP第4章中所示实现一个Scheme解释器,这个问题也可能与Schemers有关.:)
S表达式应表示为标记数据.到目前为止,我已经构建了一个变体记录,它代表了数字和对.希望代码是可读的和不言自明的:
program scheme;
type
TTag = (ScmFixnum, ScmPair);
PScmObject = ^TScmObject;
TScmObject = record
case ScmObjectTag: TTag of
ScmFixnum: (ScmObjectFixnum: integer);
ScmPair: (ScmObjectCar, ScmObjectCdr: PScmObject);
end;
var
Test1: TScmObject;
Test2: TScmObject;
Test3: TScmObject;
function MakeFixnum(x: integer): TScmObject;
var
fixnum: TScmObject;
begin
fixnum.ScmObjectTag := ScmFixnum;
fixnum.ScmObjectFixnum := x;
MakeFixnum := fixnum;
end;
function MakePair(car, cdr: PScmObject): TScmObject;
var
pair: TScmObject;
begin
pair.ScmObjectTag := ScmPair;
pair.ScmObjectCar := car;
pair.ScmObjectCdr := cdr;
MakePair := pair;
end;
begin
Test1 := MakeFixnum(7);
writeln('Test1, Tag: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用"Inno Setup Compiler 5.5.3(a)"编译安装程序.我已经包含了2种不同的语言(使用默认的.isl作为特定语言),但不是我无法弄清楚如何更改我所拥有的每种类型的"描述"字段(即"完整","紧凑"和"自定义")对于每种语言,但保留任何其他功能,即类型的"名称"应保持不变.我的代码现在看起来像这样:
[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl"
Name: "sl"; MessagesFile: "compiler:Slovenian.isl"
[Types]
Name: "full"; Description: "Full installation"; Languages: en
Name: "compact"; Description: "Compact installation"; Languages: en
Name: "custom"; Description: "Custom installation"; Languages: en; Flags: iscustom
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我得到以下情况:
我想从我的Pascal程序中调用一个C函数.C函数应该用值填充传递的指针.
这是C函数:
DLLEXPORT int dpstate_callPluginFunction(const char* plugin, const char* function, bool synchronous, const char* p0, const char* p1, const char* p2, const char* p3, const char* p4, const char* p5, const char* p6, char** o0, char** o1, char** o2, char** o3, char** o4, char** o5, char** o6)
Run Code Online (Sandbox Code Playgroud)
"p"参数是输入参数,"o"参数是输出参数.我试图在我的Pascal程序中调用该函数,如下所示:
C Functioncall声明:
var dpstate_callPluginFunction: function(plugin, method: PAnsiChar; synchronous: boolean; p0, p1, p2, p3, p4, p5, p6: PAnsiChar; o0, o1, o2, o3, o4, o5, o7: PPAnsiChar): integer; cdecl;
Run Code Online (Sandbox Code Playgroud)
C功能调用加载:
@dpstate_callPluginFunction:= GetProcAddress(mConnectorLibrary, 'dpstate_callPluginFunction'); …Run Code Online (Sandbox Code Playgroud) 我想在Delphi中制作货币转换器,自从我上次使用Delphi以来已经有一段时间了,所以我有点生疏了.当我试图创建一个if,else if,else语句时,它给出了错误:"表达式必须是BOOLEAN".
这是我的代码:
if Edit1.Text = '' And Edit2.Text <> ''
then Edit2.Text := '1'
else
if Edit1.Text <> '' And Edit2.Text = ''
then ShowMessage('Blah')
else
if Edit1.Text ='' And Edit2.Text = ''
then ShowMessage('Please Enter A Value')
else
ShowMessage('Mathing Suff...');
Run Code Online (Sandbox Code Playgroud)
如果有人能看到我的愚蠢错误或出了什么问题会对你有所帮助.:)
编辑:错误在第一个if语句的行上弹出,而另外两个if在它之后.
我希望用户在安装过程中选择许可文件,如何创建这种对话框?有谁能展示一些示例代码?
pascal ×10
delphi ×5
freepascal ×3
inno-setup ×2
c ×1
conditional ×1
delphi-xe2 ×1
if-statement ×1
installer ×1
pointers ×1
scheme ×1
sicp ×1
windows-7 ×1
xml ×1