我在网上找到了这段代码,但FMX.Bitmap没有扫描线.有可能以某种方式将VCL.TBitmap复制或绘制到FMX.Bitmap吗?
{$IFDEF MSWINDOWS}
type
TBitmap = FMX.Types.TBitmap;
TVclBitmap = Vcl.Graphics.TBitmap;
procedure TakeScreenshot(Dest: FMX.Types.TBitmap);
var
DC: HDC;
Size: TPointF;
VCLBitmap: TVclBitmap;
Y: Integer;
begin
VCLBitmap := nil;
//Size := FMX.Platform.IFMXScreenService.GetScreenSize;
DC := GetDC(0);
try
VCLBitmap := TVclBitmap.Create;
VCLBitmap.PixelFormat := pf32bit;
VCLBitmap.SetSize(Trunc(Size.X), Trunc(Size.Y));
BitBlt(VCLBitmap.Canvas.Handle, 0, 0, VCLBitmap.Width, VCLBitmap.Height,
DC, 0, 0, SRCCOPY);
Dest.SetSize(VCLBitmap.Width, VCLBitmap.Height);
{ The format of a FMX bitmap and a 32 bit VCL bitmap is the same, so just
copy the scanlines. - not true- FMX bitmap does not …Run Code Online (Sandbox Code Playgroud) 我正在从iOS6迁移到iOS7,但我想保留适用于iOS6的代码,所以我的代码如下所示:
if (isiOS7orAbove) {
sizeios7 = [text boundingRectWithSize:CGSizeMake(TEXTVIEW_WIDTH, 9999)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:nil context:nil];
}else{
size = [text sizeWithFont:[self cellFont]
constrainedToSize:CGSizeMake(TEXTVIEW_WIDTH, 9999)
lineBreakMode:NSLineBreakByWordWrapping];
}
Run Code Online (Sandbox Code Playgroud)
但是Xcode一直警告我[text sizeWithFont...]不赞成.现在,因为我确信我的旗帜isiOS7orAbove可以处理iOS版本所以我不需要警告,因为我已经处理过它.
我不想真的禁用有关弃用方法的警告,我想要的是告诉Xcode我已经处理它,应该适用于较低版本的iOS.
那么有可能只删除[text sizeWithFont ...]的警告吗?
我想一个叫宏的东西应该这样做,#IF IOS6但我不确切知道如何.
我编写了以下代码来计算用户输入时的行数和字符数.但它有一个问题,它在用户输入第一个字符后开始计数,当他按下退格键时,它会增加计数器,然后开始减少它.
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
begin
Text1.Text := 'Lines: ' + IntToStr (Memo1.Lines.Count);
Text2.Text := 'Characters: ' + IntToStr (Length(Memo1.Text));
end;
Run Code Online (Sandbox Code Playgroud) 我想使用具有以下名称的变量:topMiddleOligocenetoUpperEocene?
我怎样才能在 shell 脚本中做到这一点(即使用问号)?我试过:
{topMiddleOligocenetoUpperEocene?}="something"
Run Code Online (Sandbox Code Playgroud)
但我的 shell 脚本中不理解它(myfile.sh 在第一行中使用 #!/bin/sh)。
任何提示将不胜感激,提前致谢。
IDE:Embarcadero XE5 c ++构建器。
我试图在XML CData 节中转储UnicodeStrings。
这样的字符串的小摘录:
u"‰PNG\r\n\x1A\n\0\0\0\rIHDR\0\0\0õ\0\0\02\b\x06\0\0\0„\\i\0\0\0\x01sRGB\0®Î\x1Cé\0\0\0\x04gAMA\0\0±\vüa\x05\0\0\0\tpHYs\0\0\x0EÃ\0\0\x0EÃ\x01Ço¨d\0\0\v¼IDATxÚíœypUÕ\x19ÀO\x06…°¤\x04D$ˆ²\b1š\b\x18@...etc"
Run Code Online (Sandbox Code Playgroud)
我知道一个XML文档可以包含非ASCII字符,并且我认为XML解析器无法解析XML CData节的内容(节末尾指示符“ [[> ” 除外)不存在在我的数据中进行检查)。
当创建(写入)CDATA节,我仍然得到“ 无效字符在文本内容创建节点时被发现的错误”。
代码示例:
_di_IXMLDocument pXMLDocument = NewXMLDocument("1.0");
// I've played around with the document encoding with no success, guessing it's only applicable while reading the document.
// pXMLDocument->SetEncoding(L"iso-8859-1");
String myString; // Unicode, contains my data string.
// 1st param of CreateNode method is of type UnicodeString.
di_IXMLNode pCDataNode = pXMLDocument->CreateNode( myString, ntCData );
Run Code Online (Sandbox Code Playgroud)
有什么想法为什么会失败?编码有问题吗?
编译FireMonkey项目并在另一台PC上执行应用程序后,我遇到了一个错误 - "rtl190.bpl丢失".
所以我搜索谷歌,我找到了"解决方案",这对我不起作用.
它说我应该取消选中"Link with Dynamic RTL"和"Link with Delphi runtime ...".
确实在编译之后,可执行文件更大,但我仍然遇到完全相同的错误.
我必须手动将"rtl190.bpl"和"fmx190.bpl"复制到exe的目录才能使其正常工作.
我该如何解决这个问题?
我在创建动态按钮的新过程时遇到问题.单击该按钮时,它应该将项目发送到RichEdit.
我已经宣布了我的所有对象和程序.
这是我的代码:
type
TfrmSale = class(TForm)
redOutput: TRichEdit;
btnBuy: TButton;
procedure btnBuyClick(Sender: TObject);
private
pnlSale : TPanel;
edtQuantity : TEdit;
rgpOptions : TRadioGroup;
btnSelect : TButton;
procedure btnSelectCick(Sender: TObject);
public
{ Public declarations }
end;
var
frmSale: TfrmSale;
implementation
{$R *.dfm}
procedure TfrmSale.btnBuyClick(Sender: TObject);
begin
pnlSale := TPanel.Create(frmSale);
pnlSale.Parent := frmSale;
pnlSale.Left := 10;
pnlSale.Top := 10;
pnlSale.Width := 350;
pnlSale.Height := 250;
pnlSale.Visible := True;
edtQuantity := TEdit.Create(pnlSale);
edtQuantity.Parent := pnlSale;
edtQuantity.Left := 50;
edtQuantity.Top := 60;
edtQuantity.Width …Run Code Online (Sandbox Code Playgroud) 参考http://docwiki.embarcadero.com/RADStudio/XE6/en/Structured_Types#Dynamic_Arrays上的在线文档.
很清楚地写道,要创建动态数组的独立副本,请使用Copy()函数.在该链接中找到的示例代码还说明了在复制之后,如果更改了一个数组,则它不会反映到另一个数组中,因为它们都是独立副本.但是,这对我不起作用.复制之后,如果我更改了一个数组,另一个数组会自动更改为接收相同的值,这意味着Copy()只执行X:= Y所做的操作.根据文档,"X:= Y"和"X:=复制(Y)" 不相同.
这是我的代码:
type
TTestArray = array of TMyType; //Note: TMyType is a class and not a record.
var
X, Y, Z: TTestArray;
begin
SetLength(X, 1); //create first array
X[0].testString := 'Test Y';
Y := copy(X);
X[0].testString := 'Test Z'; //re-assign another value
Z := copy(X);
X[0].testString := 'Test X';
Run Code Online (Sandbox Code Playgroud)
此时,testString字段应包含不同的文本.所以,
X[0].testString should be 'Test X'
Y[0].testString should be 'Test Y'
Z[0].testString should be 'Test Z'
Run Code Online (Sandbox Code Playgroud)
但是,所有这三个都只有'Test X'作为testString中的值,因此暗示Copy()没有创建数组X的独立副本.相反,所有三个数组都指向相同的内存位置.
任何可靠地创建动态数组的独立副本的方法(即完成我上面尝试做的事情)?
注意(稍后添加): TMyType是一个类而不是记录.因此,根据下面非常有用的评论,这是CLASS情况下的预期行为.那么,在这种情况下,如何将X独立复制到Y和Z?
注2:从主题行中删除"Bug".对不起,Embarcadero ...... …
我知道如何操纵像TList等派生的泛型类.
但是,当我想操纵一个普通的动态数组时,我遇到了困难.
如何将以下代码转换为使用泛型的版本?
//code A
function CloneArray(original: TArray_Of_TX): TArray_Of_TX;
var
i: integer;
copy: TX;
begin
Result.SetLength(SizeOf(original));
for i:= 0 to SizeOf(original) -1 do begin
copy:= TX.Create;
copy.assign(original[i]);
Result[i]:= copy;
end; {for i}
end;
Run Code Online (Sandbox Code Playgroud)
如果我使用TList,通用版本将是:
//code B (works, but not on a plain dynamic array)
uses
System.SysUtils, system.classes, Generics.Collections;
type
TMyList<T: TPersistent, constructor > = class(TList<T>)
public
function CloneArray: TMyList<T>;
end;
implementation
function TMyList<T>.CloneArray: TMyList<T>;
var
i: integer;
temp: T;
begin
Result:= TMyList<T>.Create;
for i:= 0 to SizeOf(self) -1 do …Run Code Online (Sandbox Code Playgroud) 这个for循环(减少最小的例子);
@echo off
for %%a in (help -help --help /help ? /?) do (
echo %%a
)
Run Code Online (Sandbox Code Playgroud)
用'?'扼杀2个元素 字符.它输出
C:\Temp>test.bat
help
-help
--help
/help
C:\Temp>
Run Code Online (Sandbox Code Playgroud)
所以当它击中第一个'?'时它就退出循环.
这个集合的正确转义序列是什么?尝试了一堆东西,双引号,插入符号,反斜杠等,但似乎没有任何作用.
delphi ×6
firemonkey ×3
arrays ×1
batch-file ×1
bpl ×1
c++ ×1
c++builder ×1
delphi-7 ×1
delphi-xe4 ×1
delphi-xe5 ×1
deprecated ×1
escaping ×1
generics ×1
ios ×1
macros ×1
shell ×1
string ×1
variables ×1
warnings ×1
windows ×1
xml ×1