小编Sil*_*ver的帖子

使用指针和资源字符串

我试图显示附加到Resourcestring的常量数组的内容; 但它无法正常工作(Showmessage应显示'Primavera'),但是当您完成应用程序时,您会收到一条空白消息和异常.例如,示例代码在Lazurus中运行良好.我错过了什么....

unit U_Translate;
interface
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  end;

Resourcestring

  RS1 = 'Primavera'; RS2 = 'Verano'; RS3 = 'Otoño'; RS4 = 'Invierno';

Const
 CEstacion: Array [1..4] of ^String = (@RS1,@RS2,@RS3,@RS4);

var Form1: TForm1;

implementation
$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 ShowMessage (CEstacion[1]^);
end;

end.
Run Code Online (Sandbox Code Playgroud)

delphi freepascal lazarus

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

读取 TZipFile 时发生内存泄漏

以下代码创建一个.zip文件,其中包含名为HelloWord.txt. 后来,它正确地读取了文件,但是使用和释放时发生了内存泄漏procedure Zipfile.Read (0, LStream, ZHeader) LStream

我用来ReportMemoryLeaksOnShutdown := DebugHook <> 0;查看内存泄漏。

// Uses  System.zip, System.IOUtils;
    
procedure Probezip;
var
  zipfile           : TZipFile;
  PathDoc           : string;
  LStream           : TStream;
  ZHeader           : TZipHeader;
  MyList            : TStringList;
begin
  // (Path documents windows)
  PathDoc := TPath.GetDocumentsPath;

  zipfile := TZipFile.Create;
  MyList  := TStringList.Create;


try
 // Write test TZipfile
  MyList.Add ('Hello Word');
  MyList.SaveToFile (PathDoc + '\' + 'helloword.txt');

  zipfile.Open (PathDoc + '\' + 'test.zip', zmWrite);
  ZipFile.Add …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-10.2-tokyo

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

访问 Delphi 中的只写属性

我很难访问渐变中使用的颜色,例如 firemonkey 中的 TRectangle。渐变属性(颜色和颜色 1)被定义为只写,但有必要读取它们的值。

访问这些属性的读取值的正确方法是什么?

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Objects;

type
  TForm1 = class(TForm)
    Rectangle: TRectangle;
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.FormCreate(Sender: TObject);
var
  ColorGradient1: TAlphaColor;
begin

  // Error [dcc32 Error]: E2130 Cannot read a write-only property
  ColorGradient1 := Rectangle.Fill.Gradient.Color1;

end;

end.
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

delphi firemonkey

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