小编tru*_*ker的帖子

Firebird默认字符集

SQL select命令

SELECT a.RDB$CHARACTER_SET_NAME FROM RDB$DATABASE a
Run Code Online (Sandbox Code Playgroud)

返回NULL.在创建新数据库时未指定任何字符集时使用了什么字符集?各种版本的Firebird(1.0,2.0,2.5.1等)之间有区别吗?

firebird character-encoding

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

Borland/Delphi替代__super关键字

关键字__super是Microsoft特有的.它用于访问父类的虚方法.您是否知道borland c ++/delphi编译器的替代关键词?

class MyBaseClass
{
    virtual void DoSomething();
};

class MyDerivedClass : public MyBaseClass
{
    virtual void DoSomething();
};

void MyBaseClass::DoSomething()
{
    // some code
}

void MyDerivedClass::DoSomething()
{
    __super::DoSomething();  // calls implementation of base class - no need to know name of base class

    // implementation specific to derived class adding new functionality
}
Run Code Online (Sandbox Code Playgroud)

c++ delphi compiler-construction c++builder

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

DataSource和DataSet之间的区别

我目前正在研究项目,其主要任务是读取存储在SQL数据库中的数据并以用户友好的形式显示它们.使用的编程语言是C++.我在Borland C++ Builder 6环境中工作.但我认为标题中提出的问题与编程语言或库无关.从db读取数据时,我经常在类名中遇到这些术语而不确切知道它们代表什么.我知道它们表现为存储在db中的数据的接口.但为什么需要使用两个接口类而不是一个?

sql datasource interface dataset

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

未处理 Windows 服务异常

我有基于类 ServiceBase 的常规 C# 服务。此服务在启动时加载 c++ 动态链接库。有时会发生服务在非托管代码中崩溃。不幸的是,事件查看器仅对此进行了非常简短的描述。如果他的消息是这样的:

应用程序:StreamMapService.exe 框架版本:v4.0.30319 描述:由于未处理的异常,进程被终止。异常信息:异常代码 c0000005,异常地址 00000012"。

99% 确定问题出在非托管代码中。问题是这种情况很少发生(通常每天一次),并且仅在作为服务运行时发生。在调试器下一切正常。为了找出有问题的代码,我按以下方式编辑了我的主要方法:

    static void Main()
    {
        try
        {
            if (!Environment.UserInteractive)
            {
                ServiceBase[] ServicesToRun;
                ServicesToRun = new ServiceBase[] 
                { 
                    new Service1() 
                };
                ServiceBase.Run(ServicesToRun);
            }
            else
            {
                var services = new Service1();
                services.Start();
                Console.WriteLine("Press return to exit");
                Console.ReadLine();
                services.Stop();
            }
        }
        catch (SEHException e)
        {
            // wrapper for all exceptions having its origin in unmanaged code
            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("Crash time: {0}\n", DateTime.Now.ToString());
            sb.AppendFormat("\nMessage:\n{0}", e.Message);
            sb.AppendFormat("\nSource: {0}\n", e.Source); …
Run Code Online (Sandbox Code Playgroud)

c# service callstack exception-handling unmanaged

5
推荐指数
1
解决办法
6561
查看次数

禁用RichTextBox自动滚动

我正在使用RichTextBox控件来显示应用程序日志.我通过几次调用RichTextBox :: AppendText方法每秒更新一次控制.对我来说真正烦人的是光标一直滚动到文本的最后一行.当用户需要分析开头的日志时,它非常不舒服.我试过以下解决方案来解决我的问题:

int pos = tb_logs.SelectionStart;
tb_logs.AppendText("log message");
tb_logs.SelectionStart = pos;
Run Code Online (Sandbox Code Playgroud)

这不是问题的核心,因为定期重新绘制控制,这非常分散注意力.有一些更清洁的解决方案?

c# refresh richtextbox autoscroll

5
推荐指数
1
解决办法
5232
查看次数

WSAGetLastError返回零

我在叫ConnectEx()方法.它返回FALSE值,所以我通过WSAGetLastError调用检查错误代码.有时会发生返回值为零的情况.这是什么意思?

winapi

5
推荐指数
1
解决办法
5216
查看次数

调试COM对象析构函数时出现奇怪的崩溃

我的应用程序是C#和C++代码的混合.用C#编写的启动模块在初始化阶段C++模块中通过COM(组件对象模型)机制加载.一切正常,直到我决定添加到C#部分wcf服务.所有wcf服务调用都使用COM路由到C++代码.添加一些新方法后,我注意到输出窗口中存在内存泄漏.所以我从截图中可以看到断点到C++类的析构函数.从这一点开始,奇怪的事情就开始发生了.程序到达断点后意外崩溃.第一个奇怪的事情是,当我运行没有设置断点的程序时,它会慷慨地结束.第二个奇怪的事情是程序崩溃的方式就像它没有调试器一样运行.单击"在调试器中打开"按钮(或类似的东西)后,我收到错误消息:"程序已在调试器下打开." 输出窗口中没有消息可以指向错误的来源,没有可疑代码.当向析构函数添加消息框时,它会显示小数秒,然后整个应用程序关闭(不添加用户机会来读取消息框中显示的内容).拼命寻找任何线索.

PS问题仅在至少调用一次wcf方法时发生.不依赖于此特定调用中的程序流是否路由到C++级别.

在此输入图像描述

在此输入图像描述

c# c++ com visual-studio-2010

5
推荐指数
1
解决办法
449
查看次数

什么是标准的unicode字体?

以下操作系统的标准unicode字体是什么:

  • Windows XP

  • Windows Vista

  • 窗口7

按标准来说,我的意思是它们存在于新安装的操作系统中 - 无需将它们作为附加软件包安装.

windows unicode fonts

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

在构造函数中的神秘堆栈溢出

这是我的程序使用的类层次结构:

在此输入图像描述

TForm_Upgrade_Database的构造函数如下所示:

__fastcall TForm_Upgrade_Database :: TForm_Upgrade_Database(TComponent*Owner,int newest_version):TForm(Owner){}

在尝试创建公式的实例之后

TForm_Upgrade_Database *dlg = new TForm_Upgrade_Database(this, newest_version);
Run Code Online (Sandbox Code Playgroud)

我的程序抛出EStackOverflow异常

在此输入图像描述

我停止了程序并在TForm_Upgrade_Database构造函数中使用断点再次运行它.几步之后callstack看起来像这样:

在此输入图像描述

如何TCustomForm构造函数继续尝试调用其后代的构造函数???

最小的测试用例:

so_project.cpp:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "f_form.h"
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
   TForm_Upgrade_Database *form = new TForm_Upgrade_Database(NULL, 10);
   delete form;
   form = NULL; 

   return 0;
}
//---------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

f_form.cpp:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "f_form.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm_Upgrade_Database *Form1;
//---------------------------------------------------------------------------
__fastcall TForm_Upgrade_Database::TForm_Upgrade_Database(TComponent* Owner, int x)
   : TForm(Owner)
{
}
//---------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

f_form.h:

//---------------------------------------------------------------------------

#ifndef f_formH
#define …
Run Code Online (Sandbox Code Playgroud)

c++ stack-overflow constructor c++builder c++builder-6

5
推荐指数
1
解决办法
504
查看次数

如何在不重新启动IDE的情况下加载更新的组件包?

在Delphi中开发新组件时,我遇到了这种低效率.每次我对源代码进行增量更改(例如,修复bug)时,我都会构建新组件并将其安装在Component Palette上.还行吧.在IDE的另一个实例中,我打开了一个使用此组件的项目.它是我的一个表单上的可视组件.要应用新更改,需要重新启动此第二个实例 - 关闭和重新打开表单或项目是不够的.这个过程可以优化吗?

delphi development-environment custom-component c++builder-xe

5
推荐指数
1
解决办法
434
查看次数