标签: freepascal

如何将文本附加到 Web 服务器上的文件?

我使用的是 Lazarus 1.0.8(最新版本),并且已经安装了 Indy 10。我还有一个带有 PHP 脚本的网站,该脚本在服务器上保存一个文本文件(称为“stats.txt”)。我想使用我的程序上传另一个文本文件,其中包含统计文本+我在备忘录中写入的新文本。我不想让你为我编写代码,只是你能给我一个关于我该怎么做的建议吗?

我想我可以下载备忘录中“stats.txt”的内容,然后再次上传,但添加新文本。有没有更好的办法?

delphi freepascal indy

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

在 Lazarus 项目中获取应用程序版本号不起作用

我正在使用以下单元尝试读取 Lazarus 项目中的应用程序版本号,但 GetProductVersion 始终返回 0.0.0.0

http://forum.lazarus.freepascal.org/index.php?topic=13957

我在 Windows 7 上使用 Lazarus 1.2.4 和 FPC 2.6.4。

当我编译、链接和运行应用程序时,我没有收到任何错误,因此看来该单元已正确包含...

我不知道还能去哪里寻找不起作用的东西。有人可以给我一些指点吗?

freepascal version lazarus windows-7

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

x64 代码中的对齐问题,Free Pascal

如果针对 32 位进行编译(使用适用的寄存器重命名),下面的代码可以正常工作。但它在执行时会抛出错误(并且“警告:目标文件“project1.o”包含到符号“.data.n_tc_p$project1_orbitkeyheader64$int64$longint$$int64_shufidx”的32位绝对重定位。”编译时)。

function SwapBytes64(const Val: Int64): Int64;
{$A 16}
const
  SHUFIDX : array [0..1] of Int64 = ($0001020304050607, 0);
begin
asm
  movq          xmm0, rcx
  pshufb        xmm0, SHUFIDX    // throws
  movq          rax, xmm0
end;
end;
Run Code Online (Sandbox Code Playgroud)

我该如何纠正这个问题(最好是对齐常数)。

编辑 我也尝试使用 movdqu。

答案 这是@Jester 答案的结果:

function SwapBytes64(const Val: Int64): Int64;
const
  SHUFIDX : array [0..1] of Int64 = ($0001020304050607, 0);
begin
asm
  movq          xmm0, rcx
  movdqu        xmm1, [rip+SHUFIDX]
  pshufb        xmm0, xmm1
  movq          rax, xmm0
end;
end;
Run Code Online (Sandbox Code Playgroud)

这也有效,但没有明显的速度优势:

function SwapBytes64(const Val: Int64): Int64;
const …
Run Code Online (Sandbox Code Playgroud)

assembly freepascal lazarus

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

在 pascal 定义中传递参数

我试图用帕斯卡(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 定义中传递变量参数?

macros preprocessor pascal freepascal

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

C到Delphi/Pascal

我需要将一段C代码翻译成Delphi/Pascal代码,但是我无法理解几行代码.

C代码:

static char* get_boundary(apr_pool_t* p, const char* ctype) {
  char* ret = NULL ;
  if ( ctype ) {
    char* lctype = lccopy(p, ctype) ;
    char* bdy = strstr(lctype, "boundary") ;
    if ( bdy ) {
      char* ptr = strchr(bdy, '=') ;
      if ( ptr ) {
    // what is the following line supposed to do?
    bdy = (char*) ctype + ( ptr - lctype ) + 1;
    // and this? I understand it's a loop, but *ptr and …
Run Code Online (Sandbox Code Playgroud)

c delphi pascal freepascal

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

从原始字节数组中搜索Unicode字符 - 免费Pascal\Lazarus或Delphi

我不想让人们解释为什么以及怎么这样我才会跳进去.

我有一个包含原始字节数据的字节数组.该数组是1000个字节.我想通过1000字节的数组并仅提取可能类似于文件名的UTF-16 Unicode字符,但我不知道字符出现在1000字节数组中的确切位置.

我已经阅读了 Lazarus Unicode Page这个,但我仍然不确定我的问题的语法方法.我知道Unicode字符大小最多可达4个字节,但通常是两个(字母和空格).

我已经使用UTF8encode(WideCharLenToString(@ MyArray,SomeIntValue)成功用于其他领域,我知道某些Unicode字符存在于我询问的这个线程中并且现在已经解决了.但我现在需要为它们"寻找"它们,因为一个不同的原因,在数组中.例如" 查看前16个字节.它们是Unicode吗?如果没有,请查看下一个16.它们是Unicode吗?如果是,请将它们转换为字符串并显示它们".

谁能帮我?

delphi unicode bytearray freepascal

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

Lazarus中组件的名称是什么,Delphi中的名称是"Canvas"?

我想在Lazarus中创建一个绘图应用程序,但是我没有看到适当的控件,我可以在Deplhi中将其用作画布.它叫什么名字 ?

freepascal lazarus

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

如果我通过在pascal中为它分配一个非初始化数组来清除我的数组,那么会发生什么不好的事吗?

在pascal中,我敢于清理阵列的唯一方法就是简单地遍历它并清除它,但效率非常低.我不能简单地通过为它分配一个空数组来重新初始化它吗?

program arrays;
  var
    working, empty : array [1..10] of integer;
begin
  working[3] := 5;
  working:= empty;
end.
Run Code Online (Sandbox Code Playgroud)

可以这样做,这可能适得其反吗?

delphi pascal freepascal

2
推荐指数
2
解决办法
2655
查看次数

FPC BASM32 MUL bug?

我在将Delphi BASM32代码移植到FPC时遇到了一个问题:

program MulTest;

{$IFDEF FPC}
  {$mode delphi}
  {$asmmode intel}
{$ELSE}
  {$APPTYPE CONSOLE}
{$ENDIF}

function Mul(A, B: LongWord): LongWord;
asm
         MUL    EAX,EDX
end;

begin
  Writeln(Mul(10,20));
  Readln;
end.
Run Code Online (Sandbox Code Playgroud)

上面的代码在Delphi XE中编译并按预期工作; FPC在线输出编译时错误MUL EAX,EDX:

错误:Asm:[mul reg32,reg32]操作码和操作数的无效组合

我正在使用Lazarus 1.4.4/FPC2.6.4 for Win32(当前稳定版)

任何解决方法或修复问题?

delphi freepascal lazarus fpc basm

2
推荐指数
2
解决办法
138
查看次数

FreePascal中Max函数的意外结果

正在运行的示例非常简单易懂:

program Project1;

uses
SysUtils, Math;

var
  fValue: double;
  fValueMax: double;
begin
  fValue := 7.0207503445953527;
  fValueMax := Max(0, fValue);
  writeln(fValue);
  writeln(fValueMax);
  readln;
end.   
Run Code Online (Sandbox Code Playgroud)

然而,结果完全出乎意料.出于某种原因,Max函数不仅返回两个参数中的较大数字,还会更改其值.

在上面的示例代码中,fValueMax的预期值恰好是fValue,而fValueMax则更大.差异大约是E-7,如此之小,但仍然出乎意料并且崩溃了我的下面的代码(这里没有公布这个问题以保持问题的清晰和简单).

delphi freepascal

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

标签 统计

freepascal ×10

delphi ×6

lazarus ×4

pascal ×3

assembly ×1

basm ×1

bytearray ×1

c ×1

fpc ×1

indy ×1

macros ×1

preprocessor ×1

unicode ×1

version ×1

windows-7 ×1