我被要求把Pascal带给一个孩子.尽管在我设法获得教程之前从未见过Pascal,但我现在已经足够教他了.
我写信给你们看看是否有人可以指出一些涉及简单算法的基本练习,例如:排序这个数组,找到平均值等等...
它可以是任何语言,我只需要找一些练习,这样他就可以锻炼身体.
我知道我可以很容易地收到消息
[CustomMessages]
AdditionalIcons=blablabla
Run Code Online (Sandbox Code Playgroud)
使用此代码:
ExpandConstant('{cm:AdditionalIcons}');
Run Code Online (Sandbox Code Playgroud)
获取AdditionalIcons字符串消息.但是,如何在此内部获取消息?
[Messages]
ButtonNext=huhu
ButtonInstall=bubu
Run Code Online (Sandbox Code Playgroud)
我需要的是得到ButtonNext,ButtonInstall和其他价值,这是不可能使用这样的代码来获取这些值:
ExpandConstant('{cm:ButtonNext}');
Run Code Online (Sandbox Code Playgroud)
我该如何查询这些值?
我不知道如何使用RTL中没有的任何API.我一直在使用SetFilePointer和GetFileSize将物理磁盘读入缓冲区并将其转储到文件中,这样的循环就可以完成2GB以下闪存卡的工作:
SetFilePointer(PD,0,nil,FILE_BEGIN);
SetLength(Buffer,512);
ReadFile(PD,Buffer[0],512,BytesReturned,nil);
Run Code Online (Sandbox Code Playgroud)
但是,GetFileSize的限制为2GB,SetFilePointer也是如此.我有绝对不知道如何delcare一个外部API,我已经看了RTL和谷歌搜索了很多例子,并没有找到正确的答案.
我试过这个
function GetFileSizeEx(hFile: THandle; lpFileSizeHigh: Pointer): DWORD;
external 'kernel32';
Run Code Online (Sandbox Code Playgroud)
并按照建议这样做
function GetFileSizeEx(hFile: THandle; var FileSize: Int64): DWORD;
stdcall; external 'kernel32';
Run Code Online (Sandbox Code Playgroud)
但是该函数返回0,即使我使用的是有效的磁盘句柄,我已经确认并使用较旧的API转储数据.
我正在使用SetFilePointer跳转每512字节和ReadFile写入缓冲区,反过来我可以使用它来设置我何时使用WriteFile将初始程序加载程序代码或其他内容写入磁盘.我需要能够将文件指针设置超出2gb.
有人可以帮我做外部声明和调用GetFileSizeEx和SetFilePointerEx工作,所以我可以修改我的旧代码,使用4到32GB的闪存卡.
我已经尝试了一些可用的选项,比如Netcoole的Delphi2CS和TurnSharp.它们都是非常简单的代码,如果你有组件,它将产生大量的错误.我的项目很大,大约1GB,计算所有vcl,源和存储库.是否有这样的工具来进行这种重型转换?谢谢.
我正在将伟大的fmod C标题翻译成Pascal,而且因为前向声明而被卡住了.如果我在类型之前声明了该函数,则错误为"FMOD_CODEC_STATE:unknown",如果我在函数之前声明FMOD_CODEC_STATE ,则错误为"FMOD_CODEC_METADATACALLBACK:unknown"我是否知道如何解决此问题?非常感谢你 !
type
FMOD_CODEC_STATE = Record
numsubsounds: Integer;
waveformat: array[0..0] of FMOD_CODEC_WAVEFORMAT;
plugindata: Pointer;
filehandle: Pointer;
filesize: Cardinal;
fileread: FMOD_FILE_READCALLBACK;
fileseek: FMOD_FILE_SEEKCALLBACK;
metadata: FMOD_CODEC_METADATACALLBACK;
end;
FMOD_CODEC_METADATACALLBACK = function (codec_state: FMOD_CODEC_STATE; tagtype: FMOD_TAGTYPE; name: PChar; data: Pointer; datalen: Cardinal; datatype: FMOD_TAGDATATYPE; unique: Integer):FMOD_RESULT;
Run Code Online (Sandbox Code Playgroud) Pascal的C语言#include "code.h",Python语言import code等方法是什么?
我在尝试为C++中的每个循环制作时遇到问题.我不确定这是否可能在C++中如果我仍然不知道这样做.
我有一个简单的问题用帕斯卡写的,它找到了一年中的一天,当时是星期五13或星期六25没有遇到哪一天.
在pascal我有这样的代码:
{First I declare types}
type
months = (January, February, March, April, May, June, July, August, September, October, November, December);
...
{Then I declare variable for months}
var
m: mesec;
...
{Then I can declare for loop that will loop over months}
for m:= januar to december do
...
Run Code Online (Sandbox Code Playgroud)
在python中也可以使用类似的方法为每个循环执行枚举.我的问题是:
在C++中有没有任何方法可以为枚举做甚至循环?
我知道这可能看起来像一个乞讨者的问题,但我尝试了几种不同的方法来做它不起作用.不编译.
我想创建一个名为"CustomParam"的类的指针,所以我声明了
pCustomParam = ^CustomParam
Run Code Online (Sandbox Code Playgroud)
Class CustomParam得到了以下类变量,它们应该在构造函数中设置为0:
var keyArray: array of String;
var valueArray: array of String;
var paramArray: array of pCustomParam;
var isParamArray: array of Boolean;
var size: Integer;
Run Code Online (Sandbox Code Playgroud)
构造函数看起来像这样:
constructor CustomParam.create;
begin
inherited;
size:= 0;
SetLength(keyArray,0);
SetLength(valueArray,0);
SetLength(isParamArray,0);
SetLength(paramArray,0);
end;
Run Code Online (Sandbox Code Playgroud)
并被宣布为:
constructor create; overload;
Run Code Online (Sandbox Code Playgroud)
现在我尝试用"new"创建指向CustomParam的指针,如下所示:
var pointerToCustomParam: pCustomParam;
begin
new(pointerToCustomParam);
Run Code Online (Sandbox Code Playgroud)
但它不会跳转到CustomParam类的构造函数.如果我手动调用构造函数如下:
pointerToCustomParam^.create;
Run Code Online (Sandbox Code Playgroud)
应用程序将在SetLength命令上崩溃.
我注意到的是,变量"pointerToCustomParam"在"新"函数之后直接得到了垃圾内容.
我希望你能帮助我,信息足够:)
谢谢 :)