我目前正在使用Delphi XE2,并听说他们在XE3中使用自动更新进行新的Live Binding(无需像XE2那样调用Notify()).
在C#或Delphi XE2中我们必须实现INotifyPropertyChanged(Notify();在Delphi中),这种方法确实有意义,因为我们可以完全控制要更新的内容以及何时更新它,这样我们就可以轻松调整性能并实现虚拟化.
但我只是想知道它是如何工作的,它们为实现它做了什么样的机制,我不知道它们是如何做到的,以下是可能用于实现自动更新的假设.
计时器:计时器经常打勾并刷新所有数据
性能非常慢没有虚拟化
编译器级别功能:notify() events编译器自动执行的所有相关代码
很多头脑
索姆其他方法:
请帮助我确定他们是如何实现它的.
我目前正在使用XE3试用版,因此我无法访问源代码,您的答案将帮助我决定是否切换到新功能.
我有一个类(集合项)有400个属性要绑定(并非所有时间都是这样),所以性能确实在我的应用程序的稳定性中发挥了重要作用.
我见过很多64位应用程序有两个64位版本.一个是x86-64,另一个是IA64.德尔福的64位版本也会有这个吗?
我有一个登录页面,该页面会转到服务器获取一堆数据,然后我想获取其中的一些数据并使用客户端上的 Blazor 将其保存到 cookie 中。
所以首先我已经成功注入了 IHttpContextAccessor。现在在我的 Blazor 函数中,我有:
httpContextAccessor.HttpContext.Response.Cookies.Append("test", "ddd");
在调试中,当我点击上面的代码行时,它会出错:
“标题是只读的,响应已经开始。”
当然,我不会在 cookie 中使用“ddd”保存“test”,我现在只是想获取一个 cookie 来保存。
我最近使用了delphi xe,但由于rtti(我认为),exe大小非常大
如何删除rtti,我可以使我的应用程序大小与delphi 2009应用程序(490 kb)一样小,没有comprssion; 什么是rtti的用途
我使用以下代码来获取特殊目录
uses
ActiveX, ShlObj;
{...}
procedure TForm1.Button1Click(Sender: TObject);
// Replace CSIDL_HISTORY with the constants below
var
Allocator: IMalloc;
SpecialDir: PItemIdList;
FBuf: array[0..MAX_PATH] of Char;
PerDir: string;
begin
if SHGetMalloc(Allocator) = NOERROR then
begin
SHGetSpecialFolderLocation(Form1.Handle, CSIDL_PERSONAL, SpecialDir);
SHGetPathFromIDList(SpecialDir, @FBuf[0]);
Allocator.Free(SpecialDir);
ShowMessage(string(FBuf));
end;
end;
Run Code Online (Sandbox Code Playgroud)
现在我想得到我的文档路径,所以我使用mydocfolderpath:= string(FBuf)+'\ Documents',我认为它运作良好但我怀疑这是所有Windows PC(个人文件夹/文件)上的mydocuments路径可以用户更改此结构并使我的文档文件夹anywhare else(例如:c:\ documents)如果用户更改路径给我一个正确的方式,我想知道mydocuments文件夹的名称是什么(我的文档或文档)
指针仍可用于pascal,我认为它们可能会保留它直到delphi活着.
即使我在学习帕斯卡时使用了指针.我仍然无法理解指针的实际用法,我设法在没有它的情况下完成所有的delphi程序.(通过其他方式)
指针的真正用途是什么.而且我要求真实世界使用,我们可以设法做任何事情而无需指针.
我正在用c#开发一个WinRT应用程序,我使用GridView来呈现我的项目.
我希望我的项目水平排列然后(当达到最大宽度时)下一项应添加到新行(简单: 只能看到垂直滚动条).
不幸的是,我当前的xaml只能在一行中添加水平项目(带有水平滚动条)
<GridView x:Name="GridChildItem"
ItemContainerStyle="{StaticResource NonTickGridViewItem}"
VerticalContentAlignment="Stretch"
ItemTemplate="{StaticResource CustomChildItemTemplete}"
SelectionMode="Single"
IsItemClickEnabled="True"
ItemClick="gridViewChild_ItemClick_1"
Margin="0,40,0,0"
Height="Auto"
Background="{StaticResource DropDownMenuBackColor}"
ScrollViewer.IsHorizontalScrollChainingEnabled="False"
ScrollViewer.IsVerticalScrollChainingEnabled ="True"
VerticalAlignment="Top">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" Margin="20,0,0,0" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
Run Code Online (Sandbox Code Playgroud) 我正在使用Delphi XE2和更新4修补程序1
我的默认FMX应用程序表示非常缓慢,并且在事件发生时它会冻结一段时间.例如:当我点击一个按钮时,整个应用程序会冻结几秒钟(但仅限于该事件的第一次执行).所以我认为它可能是一个GPU问题并编辑我的默认Dpr文件为;
uses
FMX.Forms, fmx.Types,..
{$R *.res}
begin
Application.Initialize;
GlobalUseHWEffects := False ;
GlobalUseDirect2D := False ;
GlobalUseDirect2DSoftware := False ;
GlobalUseGDIPlusClearType := True ;
GlobalDisableFocusEffect := True ;
Application.CreateForm(...);
Application.Run;
end.
Run Code Online (Sandbox Code Playgroud)
现在它按预期工作没有任何问题,但CPU使用率与之前一样(移动鼠标时为25%)
然后我修改了我的代码
GlobalUseHWEffects := true ;
GlobalUseDirect2D := False ;
GlobalUseDirect2DSoftware := False ;
GlobalUseGDIPlusClearType := True ;
GlobalDisableFocusEffect := True ;
Run Code Online (Sandbox Code Playgroud)
现在一切顺利,只有一小段时间的节省时间和CPU使用率非常低(0 - 2%).(这就是我需要Firemonkey的原因)
现在所有控件都按预期工作,除了菜单栏,上面的设置不适用于菜单栏,它正在使用默认行为(整个应用程序冻结几秒钟).
我能做些什么才能解决这个问题.
如何管理客户端blazor中不同环境之间不同的访问变量?通常,由于我使用Azure来发布应用程序,因此我会将appsettings.json文件用于本地应用程序设置,然后在我的App Service的“ Azure应用程序设置”部分中为本地环境和其他环境之间的条目设置条目。
我要完成的示例:
客户端Blazor:
@functions {
//...more code here
await Http.PostJsonAsync<object>("http://localhost:50466/api/auth/register", vm);
}
Run Code Online (Sandbox Code Playgroud)
在已部署的Web服务器上,应将其转换为:
@functions {
//...more code here
await Http.PostJsonAsync<object>("http://wwww.mywebsite.com/api/auth/register", vm);
}
Run Code Online (Sandbox Code Playgroud)
因此,我正在寻找一种方法来将站点根URL存储在环境变量中,并在发布时对其进行转换。有没有Blazor-ey的方法可以做到这一点?
delphi ×7
c# ×3
blazor ×2
.net-core ×1
64-bit ×1
asp.net-core ×1
data-binding ×1
delphi-xe ×1
delphi-xe2 ×1
delphi-xe3 ×1
directory ×1
firemonkey ×1
gridview ×1
performance ×1
rtti ×1
xaml ×1