我有这个方法,
var
s : TStringList;
fVar : string;
begin
s := TStringList.Create;
fVar := ZCompressStr('text');
ShowMessage( IntToStr(length(fVar) * SizeOf(Char)) );
//24
s.text := fVar;
ShowMessage( IntToStr( length(s.text) * SizeOf(Char)) );
//18
end;
Run Code Online (Sandbox Code Playgroud)
ZCompressStr来自http://www.base2ti.com/zlib.htm,第121行从{$ ifndef UNICODE}更改为{$ ifdef UNICODE}以进行编译.
无论如何,如果我使用fVar变量,我可以调用ZDecompressStr,但是一旦我将它移动到字符串列表或备忘录,它似乎松开了那6个字节的数据....如果我尝试在s.text var上使用ZDecompressStr它因缓冲区错误而失败.
我得到了一些与其他开发人员分享的代码.我有一个很好的调试模块,我通过单元测试,但他没有这个,所以这是一个不断添加和删除代码的战斗.
如果有一种方法可以使用条件(很像Delphi版本或Unicode),那就太好了
{$IfDef MYComponent}
MyComponent := TMyComponent.Create;
MyComponent.Logging := true;
{$EndIf}
Run Code Online (Sandbox Code Playgroud)
我想我可以设置我的ide定义一些东西,但我想知道是否有办法检测组件是否已安装.....
查看python doc http://docs.python.org/library/urllib2.html
urllib2.urlopen(url [,data] [,timeout])
所以,我传入一个url,然后传递可选数据和超时变量(从我如何读取它).
所以,如果我想传递超时,而不是数据......那么数据的默认变量是什么?你做的,
urlopen('http://www.example.com/', , 5)
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
我有一个很大的应用程序,目前正在设置.为了节省我更改IDE/Object Inspector中的所有按钮,我计划为主要对象执行一些功能,例如
procedure StyleButton(AButton : TButton)
begin
AButton.Color := clGreen;
AButton.Font.Style = [fsBold];
end;
Run Code Online (Sandbox Code Playgroud)
等等,然后根据需要将其添加到表单onCreates
StyleButton(Button1); whatever etc
Run Code Online (Sandbox Code Playgroud)
在这样的参数中传递对象没有问题.它只是引用第一个对象吗?
它工作正常,我想不出任何问题,但因为这是一个大型的应用程序,成千上万的用户,我只是想确保没有问题/内存泄漏/资源消耗问题.
也将使用TAdvStringGrid和TEdit/TMemo组件做类似的事情.
然后只允许一个地方更改这些设置.
或者有人有更好的主意?
从这个问题将参考/一个地方的对象传递给样式对象
我只是想,如果我为我造型的项目创建了一个后代类,那该怎么办?
例如(原谅可怜的代码,不是ide,但你应该明白我的意思)
TStyledButton = class(TButton)
public
constructor Create; //This overrides the main TButton
end;
constructor TStyledButton.Create;
begin
inherited;
self.Color := clRed;
end;
Run Code Online (Sandbox Code Playgroud)
然后在我的表单中,我只将Button1作为TStyledButton.
这将删除表单创建中的所有额外代码,以处理设置样式/调用函数以设置样式.
唯一的问题是,如何在设计视图中进行此操作,我是否必须注册此Object(组件?),以便它实际上在设计视图中显示.
我在表单上有一个TMemo,允许用户输入项目列表.人们可以在这里输入很多物品.单击"保存"时,将检查TMemo的内容,然后将其添加到数据库中.
我在TStringList中有第二个列表,我循环并检查它是否包含在TMemo中的任何项目.
在坚果壳中它看起来像这样
....
//slItems = TStringList
//mItems = TMemo
for i := slItems.Count -1 downto 0 do
begin
if mItems.Lines.IndexOf(slItems[i]) = -1 then
slItems[i].Delete;
end;
----
Run Code Online (Sandbox Code Playgroud)
所以stringlist循环,检查它是否存在于备忘录中,如果不是从列表中删除.
然而,有200多个项目开始减速很多,而1000则变得非常糟糕.
什么是搜索TMemo的最快方式?
如果你有一个调用函数的线程,AFAIK是任何全局或VCL组件调用,这使得它不是线程安全的吗?
所以如果你的线程调用了类似的方法
procedure UpdateRow()
begin
StringGrid1.AddRow(....);
end;
Run Code Online (Sandbox Code Playgroud)
这不是线程安全的.但是如果你有这样的方法
function ParseXML(const XML : String) : string;
var
xml_parser : TXMLParser;
begin
xml_parser := TXMLParser.create;
... do stuff
result := xml_parser.something;
xml_parser.free;
end;
Run Code Online (Sandbox Code Playgroud)
这是线程安全的,只要TXMLParser没有做任何unthread安全的事情.
但是如果两个线程同时调用该方法,它不会抛出异常,因为它们都创建了自己的TXMLParser实例吗?他们得到自己的副本.那是对的吗?
希望有道理:)
我在这里得到了一些代码,它可以很好地创建一个标签,但是当我释放标签时,它仍然显示在表单上。即使它已被删除并且不再“分配”。
这是下面的代码。它可以很好地创建标签,但不会删除。没有例外,被分配的人说假。
我也可以用 TRectangle 重现这个。
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Lab : TLabel;
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
begin
Lab := TLabel.Create(Self);
Lab.Parent := Form1;
Lab.Text := 'Hello!';
Lab.Position.X := 30;
Lab.Position.Y := 40;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
FreeAndNil(Lab);
ShowMessage(BoolToStr(Assigned(Lab), true));
end;
Run Code Online (Sandbox Code Playgroud) 早晨,
当您发布具有文本区域的表单时,使用什么行结尾?\r\n、\n 或类似的本地文件是否取决于操作系统?
我正在尝试查找 RFC 或 W3C 规范或其他内容,还是基于操作系统/浏览器而有所不同?有链接吗?
例如
<textarea name="message">This is
my
message
</textarea>
Run Code Online (Sandbox Code Playgroud)
可不可能是
This is\r\n
my\r\n
message\r\n
Run Code Online (Sandbox Code Playgroud)
或者
This is\n
my\n
message\n
Run Code Online (Sandbox Code Playgroud)
它是基于浏览器/操作系统的标准还是不同的。证明?
我不担心发送到服务器之前的 textarea 内容,而是 PHP/服务器端的实际变量内容。
从这个答案 CoInternetIsFeatureEnabled在Delphi2010中
有谁知道如何停止咔哒声.当我将它放入一个单独的pas文件中时,这似乎不适用于Delphi XE.有些人失踪了.和其他原因为什么它不会编译所以我有点卡住.
这就是我做的.
unit untUrlMon;
interface
uses
Windows;
const
GET_FEATURE_FROM_THREAD = $00000001;
GET_FEATURE_FROM_PROCESS = $00000002;
GET_FEATURE_FROM_REGISTRY = $00000004;
GET_FEATURE_FROM_THREAD_LOCALMACHINE = $00000008;
GET_FEATURE_FROM_THREAD_INTRANET = $00000010;
GET_FEATURE_FROM_THREAD_TRUSTED = $00000020;
GET_FEATURE_FROM_THREAD_INTERNET = $00000040;
GET_FEATURE_FROM_THREAD_RESTRICTED = $00000080;
SET_FEATURE_ON_THREAD = $00000001;
SET_FEATURE_ON_PROCESS = $00000002;
SET_FEATURE_IN_REGISTRY = $00000004;
SET_FEATURE_ON_THREAD_LOCALMACHINE = $00000008;
SET_FEATURE_ON_THREAD_INTRANET = $00000010;
SET_FEATURE_ON_THREAD_TRUSTED = $00000020;
SET_FEATURE_ON_THREAD_INTERNET = $00000040;
SET_FEATURE_ON_THREAD_RESTRICTED = $00000080;
type
INTERNETFEATURELIST = (
FEATURE_OBJECT_CACHING,
FEATURE_ZONE_ELEVATION,
FEATURE_MIME_HANDLING,
FEATURE_MIME_SNIFFING,
FEATURE_WINDOW_RESTRICTIONS,
FEATURE_WEBOC_POPUPMANAGEMENT,
FEATURE_BEHAVIORS,
FEATURE_DISABLE_MK_PROTOCOL,
FEATURE_LOCALMACHINE_LOCKDOWN,
FEATURE_SECURITYBAND,
FEATURE_RESTRICT_ACTIVEXINSTALL,
FEATURE_VALIDATE_NAVIGATE_URL,
FEATURE_RESTRICT_FILEDOWNLOAD,
FEATURE_ADDON_MANAGEMENT,
FEATURE_PROTOCOL_LOCKDOWN,
FEATURE_HTTP_USERNAME_PASSWORD_DISABLE,
FEATURE_SAFE_BINDTOOBJECT, …Run Code Online (Sandbox Code Playgroud) delphi ×8
delphi-2009 ×2
object ×2
char ×1
components ×1
delphi-xe2 ×1
firemonkey ×1
html ×1
performance ×1
php ×1
python ×1
string ×1
styling ×1
tmemo ×1
twebbrowser ×1
unicode ×1
urllib2 ×1
windows ×1