小编Mas*_*ler的帖子

如何防止WordPress格式化前导空格?

我正试图在我的WordPress博客上发布一些代码片段,但是当我复制并粘贴时,它会从每行代码中删除所有前导空格.一般来说,领先的空间似乎没有问题,因为我可以手动添加它们,但它不喜欢它们被粘贴在任何原因.

是否有一些我可以使用的插件,或者我可以做一些简单的代码修改,让它接受我粘贴的代码而不试图为我格式化它?

wordpress formatting plugins

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

你如何用非OO语言进行继承?

我读到早期的C++"编译器"实际上将C++代码翻译成C并在后端使用了C编译器,这让我很奇怪.我已经掌握了足够的技术知识来解决大部分工作原理,但我无法弄清楚如何在没有语言支持的情况下进行类继承.

具体来说,如何定义一个包含几个字段的类,然后是一堆继承自它的子类,每个子类都添加自己的新字段,并能够作为函数参数交替传递它们?特别是当C++允许你在堆栈上分配对象时,你怎么能这样做呢?所以你甚至可能没有指向隐藏的指针?

注意:我得到的前几个答案是关于多态性的.我知道关于多态和虚方法的一切.我甚至曾经做过一次关于Delphi中虚拟方法表如何工作的低级细节的会议演示.我想知道的是类继承和字段,而不是多态.

c c++ oop inheritance history

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

连接到 D2010 上嵌入的 Firebird

我从http://sites.google.com/site/dbxfirebird/下载了 Firebird DBX 驱动程序,并且我已经能够编译“测试连接”项目并使其运行。我将它指向我的测试数据库,如下所示:

procedure TMainForm.Button1Click(Sender: TObject);
var C: TSQLConnection;
begin
  C := TSQLConnection.Create(Self);
  try
    C.DriverName := 'FirebirdConnection';
    C.Params.Add('User_Name=SYSDBA');
    C.Params.Add('Password=masterkey');
    C.Params.Add('Database=C:\fbtest\test.fdb');
    C.Open;
    if C.Connected then
      ShowMessage('Connection is active')
  finally
    C.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它工作正常。但是当我将完全相同的代码放入不同的项目中时,它不起作用。我已将 fbclient.dll(Firebird 嵌入式驱动程序 DLL,重命名为 fbclient)、其所有依赖项和 dbxdrivers.ini 文件复制到与项目的 EXE 运行所在的同一文件夹中。我看不出任何原因这不应该工作,但是对 .Open 的调用失败并显示:

项目 Project1.exe 引发异常类 TDBXError 并显示消息“未知驱动程序:FirebirdConnection”。

同样,这是对 Open 的调用。对 DriverName 的分配工作得很好。以前有人见过这个问题吗?为什么完全相同的代码在测试项目中可以工作,但不同的代码却不能工作,有什么方法可以修复它吗?

delphi firebird firebird-embedded

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

为什么D2010调试器使某些事情变慢?

我有一个特殊的组合框,其中包含很长的项目列表(几千个),当你打开它时必须计算它.当我测试某些东西时,我惊恐地发现它花了大约一分钟才打开.所以我将程序(相同的构建,相同的选项)连接到Sampling Profiler以查看花了这么长时间,并且只需要大约5秒钟就可以打开.我尝试直接从Windows运行它,这次只花了2-3秒,这是我的预期.

那么,当Delphi调试器连接到它时,为什么完全相同的EXE会使数字变慢25倍以上呢?这并不像评估条件断点那样明显.似乎调试器的存在正在减慢它的速度.有谁知道为什么?

delphi debugging delphi-2010 slowdown

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

使用COMMIT和ROLLBACK进行多个SQL更新的Delphi应用程序

在将SQL查询嵌入到多次调用SQL for Table Updates的应用程序中时,是否可以使用SQL BEGIN TRANSACTION,COMMIT TRANSACTION,ROLLBACK TRANSACTION.例如,我有以下代码:

Q.SQL.ADD(<UPDATE A RECORD>);
Q.ExecSQL;

Q.Close;
Q.SQL.Clear;
Q.SQL.ADD(<Select Some Data>);
Q.Open;
Run Code Online (Sandbox Code Playgroud)

设置一些变量

Q.Close;
Q.SQL.Clear;
Q.SQL.ADD(<UPDATE A RECORD>);
Q.ExecSQL;
Run Code Online (Sandbox Code Playgroud)

我想要做的是如果第二次更新失败,我想回滚第一个事务.

如果我为BEGIN,COMMIT,ROLLBACK设置一个唯一的表示法,以便指定提交或回滚的内容,是否可行.

即在第一次更新之前指定BEGIN TRANSACTION_A然后在上次更新后指定COMMIT TRANSACTION_A

我希望这是有道理的.如果我在SQL存储过程中执行此操作,那么我将能够在过程的开始和结束时指定它,但由于进程块和重载SQL上的死锁,我不得不将代码分解为可管理的块服务器.

delphi sql-server-2005 sql-server-2000

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

无效的指针操作,通过调试请求的建议

我似乎已经创建了破坏内存的代码.

从来没有遇到过这样的问题,我现在设置了一个无效的指针操作.

在下面,我调用PromptForXYZPropertiesSettings后,const字符串sFilename的值被删除.

// Allow the user to quickly display the properties of XYZ without needing to display the full Editor
function PromptForXYZProperties(const sFilename:string; var AXYZProperties: TXYZProperties): boolean;
var
  PropEditor: TdlgEditor;
begin
  PropEditor:= TdlgEditor.create(nil);
  try
    PropEditor.LoadFromFile(sFilename);                   <-- sFilename = 'C:\My Folder\Some Folder.txt'
    PropEditor.SelectedXYZProperties := AXYZProperties;

    // Bypass PropEditor to show form owned by it
    Result := PropEditor.PromptForXYZPropertiesSettings;  

    if Result then
    begin
      PropEditor.SaveToFile(sFilename);                   <-- sFilename now somethign like 'B'#1#0#0'ë' or value of a different var
    end;
  finally
    PropEditor.free;      
  end;
end;
Run Code Online (Sandbox Code Playgroud)

其他详情: …

memory delphi

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

OpenGL:增加行数会改变抗锯齿吗?

我正在Delphi写一个绘画程序.用户在屏幕上单击2个点,并在它们之间绘制一条线.我希望线条消除锯齿.我将此代码放在OpenGL类的create()过程中(在开始时只调用一次):

 glEnable(GL_LINE_SMOOTH);
 glEnable(GL_BLEND);
 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
Run Code Online (Sandbox Code Playgroud)

当我开始绘制时,第一行,第二行和第三行被绘制得很好.但有趣的是,当线条数量增加(比如7,8行)时,抗锯齿开始失败!通过在屏幕上添加每一行,它变得更糟,线条边缘开始变得像锯齿!

我也把相同的代码放在我绘制线条的draw()过程的顶部(并且每次点击鼠标都会运行),但没有任何变化.

我在这里做错了吗?有人有什么建议吗?

delphi opengl delphi-2010

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

如何在OpenGL中绘制旋转棱镜?

我正在尝试绘制一个在其轴上旋转的简单晶体.我可以通过绘制一个金字塔,然后将其再次倒置来轻松地获得正确的形状,但我有两个问题.

首先,即使我用相同的颜色绘制所有颜色,其中两个面的颜色与另外两个颜色不同.

其次,它在每个金字塔上放置一个"底部",通过水晶的半透明墙可以看到,这会破坏效果.有没有办法摆脱它?

这是我用来设置和绘制GL场景的代码.当然,还有比这更多的OpenGL代码,但这是相关的部分.

procedure Initialize;
begin
  glShadeModel(GL_SMOOTH);
  glClearColor(0.0, 0.0, 0.0, 0.5);
  glClearDepth(1.0);
  glEnable(GL_DEPTH_TEST);
  glDepthFunc(GL_LEQUAL);
  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);
end;

procedure Draw; //gets called in a loop
begin
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  glLoadIdentity();
  glTranslatef(-1.5,-0.5,-6.0);
  glRotatef(rotation,0.0,1.0,0.0);
  glBegin(GL_TRIANGLE_FAN);
    glColor4f(0, 0, 1, 0.2);
    glVertex3f(0, 3.4, 0);
    glVertex3f(-1, 0, -1);
    glVertex3f(-1, 0, 1);
    glVertex3f(1, 0, 1);
    glVertex3f(1, 0, -1);
    glVertex3f(-1, 0, -1);
  glEnd;
  glBegin(GL_TRIANGLE_FAN);
    glVertex3f(0, -3.4, 0);
    glVertex3f(-1, 0, -1);
    glVertex3f(-1, 0, 1);
    glVertex3f(1, 0, 1);
    glVertex3f(1, 0, -1);
    glVertex3f(-1, 0, -1);
  glEnd;
  rotation := …
Run Code Online (Sandbox Code Playgroud)

delphi opengl

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

TForm 上的 Rtti GetFields 和 GetAttributes

我有一个这样的 TForm:

TMyForm = class (TForm)
  [MyAttr('Data')] 
  edit1: TEdit;
private
 FData: String;
end
Run Code Online (Sandbox Code Playgroud)

当我尝试通过 RTTI 获取此表单的字段时,我只获取了 edit1 字段,而不是 FDATA,并且当我查询 edit1 字段属性时,会得到一个空数组。

对于另一个不继承 TForm 的类,一切正常。为什么?

编辑样品

type


{$RTTI EXPLICIT FIELDS([vcPrivate,vcProtected, vcPublic])}
  TForm3 = class(TForm)
    [TCustomAttribute]
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    [TCustomAttribute]
    FData: String;
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
var
  LCtx: TRttiContext;
  LField: TRttiField;
  LAttr: TCustomAttribute;
begin
  for LField in LCtx.GetType(Self.ClassInfo).GetDeclaredFields do
  begin
      Memo1.Lines.Add(lField.Name);
      for …
Run Code Online (Sandbox Code Playgroud)

delphi rtti

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

有没有什么好的方法在SQL Server中构建逗号分隔列表?

在Firebird中,有一个聚合调用List()将多个结果转换为以逗号分隔的字符串.

此功能似乎不存在于SQL Server中.有没有相当于它不涉及使用或构建自己的CLR UDF 的大,长,丑,慢的解决方法for xml?(是的,我知道那些方法.寻找我可能不知道的东西.)

sql sql-server aggregate-functions

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