小编Iva*_*nov的帖子

TListView.Clear冻结我的应用程序,我该如何解决?

我在我的表单上有一个ListView:TListview,并且,我添加了很多值(大约25k TListViewItem),它工作得非常快,但是当我调用Listview.Clear时,程序冻结.我用调试器检查它,它不会步那条线.

我的问题是:我如何解决我的问题?如果可以在不到一秒的时间内创建这么多项目,为什么删除它们需要永远(我等了5分钟以上)?

delphi freeze delphi-2009

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

如何重新创建检索对象最高元素的函数?

我的计划是创建一个函数来检索对象的最高元素,可以说是数组的上限.换句话说,我正在尝试获取函数High()的代码.

到目前为止我尝试了什么:

 function High2(var X):integer;
 begin
   Result:=Pbyte(Cardinal(@X)-1)^-1;
 end;
Run Code Online (Sandbox Code Playgroud)

上面的函数应该读取对象中第一个元素(数组/字符串)的位置之前的值(长度)并返回它减少1.但是它不能在静态或动态数组类型上检索正确的结果.

如何在Pascal中重新创建High()函数?

arrays delphi pascal

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

编译所有项目热键

我在一个项目组中有两个共享相同单元的项目(大多数是全部).我使用这两个项目来测试我写的东西.

问题:当我更改两个项目使用的单元并运行当前项目时,另一个使用该单元中的旧代码(因为它未编译).

我知道编译所有项目的唯一可能性是通过系统菜单(Projects-> Build all projects).

目前,当其中一个项目运行时(使用delphi调试器),其他项目的可执行文件将被执行,但不会被编译.

如何用热键编译两个项目(比如一个项目的Shift+ F9)?

ide delphi hotkeys delphi-2009 registerhotkey

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

如何创建不终止的控制台应用程序?

在C++中,控制台应用程序可以在其Winmain过程中使用消息处理程序.如下所示:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    HWND hwnd;
    MSG msg;

    #ifdef _DEBUG
    CreateConsole("Title");
    #endif

    hwnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc);
    PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE);
    while(msg.message != WM_QUIT)
    {
        if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
            if(IsDialogMessage(hwnd, &msg))
                continue;
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }

    }

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

这使得进程在控制台窗口收到WM_QUIT消息之前不会关闭.我不知道如何在delphi中做类似的事情.

我的需求不仅仅是消息处理程序,而是一个轻量级的"技巧",使控制台应用程序像使用线程的GUI应用程序一样工作.因此,例如,可以在没有控制台应用程序终止进程的情况下处理两个Indy TCP服务器.

我的问题:如何实现这一目标?

delphi console multithreading console-application delphi-2009

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

Delphi真的比静态更好地处理动态类吗?

我不止一次被告知Delphi比static更好地处理动态类.使用以下代码:

type Tsomeclass=class(TObject)
  private procedure proc1;
  public 
    someint:integer;
    procedure proc2;
end;

var someclass:TSomeclass;

implementation

...

initialization
  someclass:=TSomeclass.Create;
finalization
  someclass.Free;
Run Code Online (Sandbox Code Playgroud)

而不是

type Tsomeclass=class
  private class procedure proc1;
  public 
    class var someint:integer;
    class procedure proc2;
end;
Run Code Online (Sandbox Code Playgroud)

我正在处理的项目中有90%的类只需要一个实例.我真的必须使用第一种方法来使用这些类吗?是否更好地优化,由Delphi处理?

对不起,我没有理由支持这个假设,但我想要专家的意见.

提前致谢!

delphi optimization static dynamic delphi-2009

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

如何从父类调用函数?

我想在C++中调用超类(父类)的继承函数.
这怎么可能?

class Patient{
protected:
  char* name;
public:
  void print() const;
}
class sickPatient: Patient{
  char* diagnose;
  void print() const;
}

void Patient:print() const
{
  cout << name;
}

void sickPatient::print() const
{
  inherited ??? // problem
  cout << diagnose;
}
Run Code Online (Sandbox Code Playgroud)

c++ oop function

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

如何使VS不复制我的C#文件

我有一个解决方案和一些项目.然后是我刚制作的Utils文件并添加到解决方案中.但是当我想从解决方案中的任何项目中使用此文件时,它将被复制到项目的文件夹中.

因此,如果我在10个项目中使用它,它将被复制10次.如何避免这种情况并使项目在其解决方案的文件夹中搜索该文件?

c# visual-studio-2012

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

如何复制堆栈?

因此,我使用了动态堆栈,我想编写一个复制构造函数,该构造函数必须从同一类的另一个实例复制堆栈的数据。我正在尝试编写该函数,但似乎很难。有人可以帮我吗?

template<typename T=int>
class LStack
{
public:

    template<typename U=int>
    struct elem
    {
        U con;
        elem<U>* link;
    }

private:

    elem<T>* el;

    void Copystack(Lstack const& stack)    // HERE
    {
        elem<T>* last = el;
        el->con = stack->con;
        while(stack->link != null)
        {
            var temp = new elem<T>;
            temp->con = stack->con;
            temp->link = stack->link;
            stack = stack->link;
        }
    }

};
Run Code Online (Sandbox Code Playgroud)

c++

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

int* 和 int*[] 有什么区别

void test(int* integers, int n) { ... }
void test(int* integers[], int n) { ... }
Run Code Online (Sandbox Code Playgroud)

有什么不同?它们都是指向 int 的指针,并且可以用作数组。例如,什么时候使用第一个?

c++

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

这个OOP惯例是真的吗?

前段时间我读过OOP的"约定",但我不确定我是否记得正确.

它说一个方法必须将继承层次结构中最通用的对象作为参数,而返回最后代的对象.

这是真的,如果是的话,任何人都可以解释一下吗?

例:

IList<T> someMethod(IList<T> someList)
{
    IList<T> resultList = new List<T>();

    ... do something with resultList ...

    return resultList;
}
Run Code Online (Sandbox Code Playgroud)

根据'约定',上面的方法应该返回List而不是IList?

oop

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