小编Vla*_*pin的帖子

在Firemonkey中声明GetTickCount在哪里?

我在Delphi中使用多个设备,我正在构建一个Android应用程序.我需要使用GetTickCount在Windows中声明的.

它存在于firemonkey的某个地方还是有替代品?

delphi firemonkey

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

如何在VirtualStringTree中添加不可见的节点?

目前我有这个代码来添加一些节点 VST

function AddVSTStructure(AVST: TCustomVirtualStringTree; ANode: PVirtualNode; AObject: TDATArecord): PVirtualNode;
var
  Data: PUserData;
begin
  Result := AVST.AddChild(ANode);
  Data := AVST.GetNodeData(Result);
  AVST.ValidateNode(Result, false);
  Data^.FObject := AObject;
end;

//adding node
VDT1.BeginUpdate;
try
  DATArecord.name := 'nodename';
  DATArecord.Visible:= False;
  AddVSTStructure(VDT1, nil, DATArecord);
finally
  VDT1.EndUpdate;
end;
Run Code Online (Sandbox Code Playgroud)

我想在非可见状态下添加节点,我的意思是完全不可见.

我知道我可以在添加它之后设置节点的可见性VDT1.IsVisible[Node] := boolean;但我想在树中显示之前将其设置为不可见,考虑到我添加的记录设置为DATArecord.Visible:= False;

因此,如果Datarecord.visible等于true,则添加具有可见状态的节点.如果是false,添加具有不可见状态的节点我该怎么做?

delphi virtualtreeview tvirtualstringtree delphi-xe8

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

使用Delphi在cmd中运行多个命令

我试图cmd从Delphi 使用以应用一些命令。我使用以下代码

ShellExecute(Application.handle, 'runas', 'cmd.exe',
  PChar('/c command to do '), nil, SW_show);
Run Code Online (Sandbox Code Playgroud)

我想在同一执行中运行多个命令

/c command1 command2 command3
Run Code Online (Sandbox Code Playgroud)

我已经制作了一个bat文件来运行一些命令。但是我不喜欢在项目中存储蝙蝠的想法。我可以在一个执行中应用多个命令吗?能做到吗?

delphi delphi-xe8

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

popupmenu标题中的非拉丁字符

我在vcl应用程序中有一个简单的弹出菜单,但是当我写入时,有一些奇怪的事情发生non-latin characterspopup-menu Caption

正确写入的字符但是在标题的末尾添加了(Z)这些额外的字符.这个字符只有当我在标题中输入非拉丁文字时才会添加,英文单词会正确显示.

这是测试项目的dfm

object Form1: TForm1
  Left = 0
  Top = 0
  BorderIcons = [biSystemMenu]
  Caption = 'Form1'
  ClientHeight = 242
  ClientWidth = 472
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PopupMenu = PopupMenu1
  PixelsPerInch = 96
  TextHeight = 13
  object PopupMenu1: TPopupMenu
    Left = 232
    Top = 128
    object N1: TMenuItem
      Caption = #1575#1604#1604#1594#1577' '#1575#1604#1593#1585#1576#1610#1577
    end …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-10-seattle

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

使用TCameraComponent

我正在尝试TCameraComponent使用以下代码调整捕获的图像的大小:

procedure TForm1.GetImage;
begin
  imagec.SampleBufferToBitmap(img.Bitmap, True);

  with resizedimg.Bitmap do // Resize the image to another bitmap
  begin
    SetSize(300, 160);
    if Canvas.BeginScene then
    try
      Canvas.DrawBitmap(img.Bitmap, TRectF.Create(0, 0, 300, 160), TRectF.Create(0, 0, 300, 160), 1.0);
    finally
      Canvas.EndScene;
    end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

但是,每次关闭相机并再次重新打开相机时,调整大小的图像会捕获实际的缩放部分TImage.为什么会出现这种情况?我究竟做错了什么?

目标是调整大小img.Bitmap以适应300x160像素.

delphi firemonkey delphi-10-seattle

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

如何读取从iDTCPServer发送的内存流中的非拉丁字符?

我有这个代码,插入一些没有拉丁字符,然后从IDTCPserverTo 发送它idTcpclient

LVU := TStringList.Create;
LVU.Add('?????');
try

  if (LVU.Count > 0) then
  begin
    memorylist := TMemoryStream.Create;
    try
      LVU.SaveToStream(memorylist);
      memorylist.Position := 0;
      AContext.Connection.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8;
      AContext.Connection.IOHandler.LargeStream := true;
      AContext.Connection.IOHandler.Write(memorylist, 0, true);
    finally
      memorylist.Free;
    end;
  end;
finally
  LVU.Free;
end;
Run Code Online (Sandbox Code Playgroud)

但是当客户收到它时,它会将ms里面的文字记为'???????' 可能是什么问题 ?我已经将连接编码设置为utf8

我在Ubuntu上运行这个服务器.当我在Windows上尝试服务器时,我得到了正常的文本.

这就是我在客户端读取流的方式

FMSFROMCALL := TMemoryStream.Create;
FTCP.Socket.LargeStream := True;
FTCP.Socket.ReadStream(FMSFROMCALL, -1, false);
FMSFROMCALL.Position := 0;
Run Code Online (Sandbox Code Playgroud)

delphi indy10 delphi-xe8

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

将数据保存到Firemonkey中的iniFile

我有这个单位保存设置 iniFile

///////////////////////////////////////
// IniSettings.pas
//
// A class for saving settings (or whatever) in an .ini file.
//
// This is made in FireMonkey, but should be usable in Delphi too.
// Example of use in the bottum of the doc.

unit IniSettings;

interface

uses Inifiles;

type
  TSettings = class(TMemIniFile)
  private
    function GetSomeData: String;
    procedure SetSomeData(const Value: String);
    function GetFormTop: Integer;
    procedure SetFormTop(const Value: Integer);
    function GetFormLeft: Integer;
    procedure SetFormLeft(const Value: Integer);
    function GetFormHeight: Integer;
    function GetFormWidth: Integer;
    procedure …
Run Code Online (Sandbox Code Playgroud)

delphi firemonkey delphi-xe8

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

如何将idhttp下载的图像从扩展转换为另一个?

我有这个从网络获取图像网址的线程然后将其保存到内存流然后从内存流保存到文件

我需要转换下载到gif图像的任何图像,所以我做这样的事情

unit downloadimgThread;

interface
uses Windows, SysUtils, Classes, dialogs, IdSSLOpenSSL, IdHttp, IdUri, System.AnsiStrings, Graphics, Jpeg, Vcl.Imaging.GIFImg, PNGImage;


type
  TDownloadUpdateVisualEvent = procedure(Sender: TObject; Anameofimg: String;
    var Aimagelocate: String) of object;

type
  TURLDownload = class(TThread)
  private
    FOnUpdateVisual: TDownloadUpdateVisualEvent;
    FURL: String;
    Fnameofimg: string;
    FPathImage: string;
    FFileNameImage: string;
    ImageName: string;
    PathURL: string;
    procedure DoUpdateVisual;
  protected
    procedure Execute; override;
  public
    constructor Create(Thrdid: Pointer; const AUrl: String;
      Const AOutPathImages: string; AOnUpdateVisual: TDownloadUpdateVisualEvent;
      Anameofimg: String); reintroduce;
    property URL: string read FURL write FURL;
    property PathImage: string …
Run Code Online (Sandbox Code Playgroud)

delphi indy10 idhttp delphi-xe8

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

从TStringStream读取数据字符串

TStringStream在使用不同OS区域语言编码时遇到问题.

我正在尝试传输图像数据.我之前遇到过问题,并在另一个问题上解决了.

但是现在我有一个编码问题TStringStream.如果操作系统区域语言设置为英语,则会从中获取损坏的数据TStringStream.

当我将语言更改为阿拉伯语时,数据会正确显示.

我目前使用Indy对二进制数据进行编码,但在开始编码之前,StringStream.DataString如果区域编码未设置为阿拉伯语,则数据已经损坏.我试图添加TEncoding.UTF8TStringStream.Create(),但该数据仍出来不正确StringStream.DataString.

function Encode64(const S: string; const ByteEncoding: IIdTextEncoding = nil): string;
begin
  Result := TIdEncoderMIME.EncodeString(S, ByteEncoding);
end;

function Decode64(const S: string; const ByteEncoding: IIdTextEncoding = nil): string;
begin
  Result := TIdDecoderMIME.DecodeString(S, ByteEncoding);
end;

StringStream := TStringStream.Create('');
try
  Jpg.Performance := jpBestSpeed;
  Jpg.ProgressiveEncoding := True;
  Jpg.ProgressiveDisplay := True;
  jpg.Assign(Image2.Picture.Bitmap);
  jpg.CompressionQuality := 25;
  jpg.Compress;
  jpg.SaveToStream(StringStream);
  StringImageData := StringStream.DataString; // the data here is corrupted when …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-xe8

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

TThread与dll检查同步问题

我有这个TThread,我在我的DLL内部更新一些视觉控制它的工作正常,但我面临问题,当我试图关闭我的DLL并再次重新打开它引发了这个异常

从线程调用的checksynchronize不是主线程

我做错了什么?我需要checksynchronize在计时器内调用,因为我会在应用程序运行时用线程更新一些vcl.

这是我的Thread单元

unit Thread;

interface

uses Messages, Windows, SysUtils, dialogs, Classes, Menus, forms, ComOBJ,
  ShlObj;

{ Thread client }

type
  TThreadCallbackProc = procedure(Sender: TObject; Updatestring : string) of object;

  TAPPTHREAD = class(TThread)
  private
     Fstatus : String;
    FOnCallbackProc: TThreadCallbackProc;
    procedure dosomework;
    procedure DoCallbackProc;
    //
  protected
    procedure Execute; override;

  Public
    constructor Create(CreateSuspended: Boolean; aThreadCallbackProc: TThreadCallbackProc);
    destructor Destroy; override;

  end;

  var
  APPTHREAD : TAPPTHREAD;




implementation


constructor TAPPTHREAD.Create(CreateSuspended: Boolean;
  aThreadCallbackProc: TThreadCallbackProc);
begin
  inherited Create(CreateSuspended);
  FreeOnTerminate := True;
  FOnCallbackProc := aThreadCallbackProc; …
Run Code Online (Sandbox Code Playgroud)

delphi multithreading

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

在delphi中修剪是否可以绕过?

我试图通过执行以下操作来检查字符串是否为空

if trim(somestring) = '' then
begin
//that an empty string
end
Run Code Online (Sandbox Code Playgroud)

我正在我的客户端应用程序中执行此空检查,但我注意到一些客户端即使应用此检查也会插入空字符串.

在我的Linux服务器端那些显示为正方形的空字符,当我复制这些字符时,我可以绕过空字符串检查,如下面的示例

 ??? 
Run Code Online (Sandbox Code Playgroud)

如果你复制这个空的字符,检查将不会受影响我怎么能避免这种情况?

delphi delphi-10-seattle

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