小编Vib*_*nRC的帖子

在XE3中使用自动更新进行实时绑定(无需像在XE2中那样调用Notify())

我目前正在使用Delphi XE2,并听说他们在XE3中使用自动更新进行新的Live Binding(无需像XE2那样调用Notify()).

在C#或Delphi XE2中我们必须实现INotifyPropertyChanged(Notify();在Delphi中),这种方法确实有意义,因为我们可以完全控制要更新的内容以及何时更新它,这样我们就可以轻松调整性能并实现虚拟化.

但我只是想知道它是如何工作的,它们为实现它做了什么样的机制,我不知道它们是如何做到的,以下是可能用于实现自动更新的假设.

  1. 计时器:计时器经常打勾并刷新所有数据

    性能非常慢没有虚拟化

  2. 编译器级别功能:notify() events编译器自动执行的所有相关代码

    很多头脑

  3. 索姆其他方法:

请帮助我确定他们是如何实现它的.

我目前正在使用XE3试用版,因此我无法访问源代码,您的答案将帮助我决定是否切换到新功能.
我有一个类(集合项)有400个属性要绑定(并非所有时间都是这样),所以性能确实在我的应用程序的稳定性中发挥了重要作用.

delphi data-binding virtualization performance delphi-xe3

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

Delphi是否可作为EM64和IA64使用?

我见过很多64位应用程序有两个64位版本.一个是x86-64,另一个是IA64.德尔福的64位版本也会有这个吗?

delphi 64-bit

13
推荐指数
2
解决办法
650
查看次数

如何使用 blazor 创建 cookie 客户端

我有一个登录页面,该页面会转到服务器获取一堆数据,然后我想获取其中的一些数据并使用客户端上的 Blazor 将其保存到 cookie 中。

所以首先我已经成功注入了 IHttpContextAccessor。现在在我的 Blazor 函数中,我有:

httpContextAccessor.HttpContext.Response.Cookies.Append("test", "ddd");

在调试中,当我点击上面的代码行时,它会出错:

“标题是只读的,响应已经开始。”

当然,我不会在 cookie 中使用“ddd”保存“test”,我现在只是想获取一个 cookie 来保存。

c# blazor

12
推荐指数
3
解决办法
2万
查看次数

delphi xe禁用RTTI

我最近使用了delphi xe,但由于rtti(我认为),exe大小非常大

如何删除rtti,我可以使我的应用程序大小与delphi 2009应用程序(490 kb)一样小,没有comprssion; 什么是rtti的用途

delphi rtti application-size delphi-xe

10
推荐指数
3
解决办法
8940
查看次数

在delphi中获取我的文档文件夹路径

我使用以下代码来获取特殊目录

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文件夹的名称是什么(我的文档或文档)

delphi directory

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

德尔福的指针

指针仍可用于pascal,我认为它们可能会保留它直到delphi活着.

即使我在学习帕斯卡时使用了指针.我仍然无法理解指针的实际用法,我设法在没有它的情况下完成所有的delphi程序.(通过其他方式)

指针的真正用途是什么.而且我要求真实世界使用,我们可以设法做任何事情而无需指针.

delphi

9
推荐指数
3
解决办法
1363
查看次数

在WinRT中包装的GridView方向

我正在用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)

c# xaml gridview windows-runtime

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

FireMonkey性能问题

我正在使用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的原因)

现在所有控件都按预期工作,除了菜单栏,上面的设置不适用于菜单栏,它正在使用默认行为(整个应用程序冻结几秒钟).

我能做些什么才能解决这个问题.

delphi firemonkey

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

Blazor:管理环境特定的变量

如何管理客户端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的方法可以做到这一点?

c# .net-core asp.net-core blazor

8
推荐指数
2
解决办法
604
查看次数

如何枚举对象中的所有属性并获取其值?

我想枚举所有属性:私有,受保护,公共等.我希望使用内置设施而不使用任何第三方代码.

delphi delphi-xe2

7
推荐指数
2
解决办法
3206
查看次数