我在Delphi中使用多个设备,我正在构建一个Android应用程序.我需要使用GetTickCount在Windows中声明的.
它存在于firemonkey的某个地方还是有替代品?
目前我有这个代码来添加一些节点 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,添加具有不可见状态的节点我该怎么做?
我试图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文件来运行一些命令。但是我不喜欢在项目中存储蝙蝠的想法。我可以在一个执行中应用多个命令吗?能做到吗?
我在vcl应用程序中有一个简单的弹出菜单,但是当我写入时,有一些奇怪的事情发生non-latin characters了popup-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) 我正在尝试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像素.
我有这个代码,插入一些没有拉丁字符,然后从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) 我有这个单位保存设置 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) 我有这个从网络获取图像网址的线程然后将其保存到内存流然后从内存流保存到文件
我需要转换下载到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) 我TStringStream在使用不同OS区域语言编码时遇到问题.
我正在尝试传输图像数据.我之前遇到过问题,并在另一个问题上解决了.
但是现在我有一个编码问题TStringStream.如果操作系统区域语言设置为英语,则会从中获取损坏的数据TStringStream.
当我将语言更改为阿拉伯语时,数据会正确显示.
我目前使用Indy对二进制数据进行编码,但在开始编码之前,StringStream.DataString如果区域编码未设置为阿拉伯语,则数据已经损坏.我试图添加TEncoding.UTF8到TStringStream.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) 我有这个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) 我试图通过执行以下操作来检查字符串是否为空
if trim(somestring) = '' then
begin
//that an empty string
end
Run Code Online (Sandbox Code Playgroud)
我正在我的客户端应用程序中执行此空检查,但我注意到一些客户端即使应用此检查也会插入空字符串.
在我的Linux服务器端那些显示为正方形的空字符,当我复制这些字符时,我可以绕过空字符串检查,如下面的示例
???
Run Code Online (Sandbox Code Playgroud)
如果你复制这个空的字符,检查将不会受影响我怎么能避免这种情况?