小编Fra*_*azz的帖子

将表从一个数据库复制到另一个数

我刚刚在我的机器上创建了一个空数据库.我现在希望将一个表从我们的服务器数据库复制到这个本地数据库.

我需要运行哪些sql命令才能执行此操作?我希望创建新表,从旧表复制数据并将其插入新表.

sql sql-server

17
推荐指数
6
解决办法
9万
查看次数

编写记录的通用TList

我正在尝试编写包含特定类型记录的通用TList.从大卫对这个问题的回答开始,我写了这堂课:

Type
  TMERecordList<T> = Class(TList<T>)
  Public Type
    P = ^T;
  Private
    Function GetItem(Index: Integer): P;
  Public
    Procedure Assign(Source: TMERecordList<T>); Virtual;
    Function First: P; Inline;
    Function Last: P; Inline;
    Property Items[Index: Integer]: P Read GetItem;
  End;

Procedure TMERecordList<T>.Assign(Source: TMERecordList<T>);
Var
  SrcItem: T;
Begin
  Clear;
  For SrcItem In Source Do
    Add(SrcItem);
End;

Function TMERecordList<T>.First: P;
Begin
  Result := Items[0];
End;

Function TMERecordList<T>.GetItem(Index: Integer): P;
Begin
  If (Index < 0) Or (Index >= Count) Then
    Raise EArgumentOutOfRangeException.CreateRes(@SArgumentOutOfRange);
  Result := @List[Index];
End; …
Run Code Online (Sandbox Code Playgroud)

delphi generics collections

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

32位和64位不同类型的动态数组长度?

我有一个在Win32上正常运行的DUnitX测试套件.但是当我尝试为Win64编译它时,这一行会产生编译错误:

Assert.AreEqual(4, Length(r.Values));
Run Code Online (Sandbox Code Playgroud)

[dcc64错误] ...:E2532无法从方法'AreEqual'的不同参数类型推断泛型类型参数

r.Values定义为:

Type TIntegers = TArray<Integer>
Run Code Online (Sandbox Code Playgroud)

Assert.AreEqual有不同的重载实现,dcc64无法选择正确的...好的,但为什么呢?为什么dcc32可以没有问题地编译它?

我唯一的线索是,如果我用鼠标悬停,Delphi会告诉我Length是System.Smallint类型.使用Smallint参数没有Assert.AreEqual实现......果然,如果我将它转换为Integer,dcc64将编译它.

但这让我很烦恼.如果我查看System.pas单元,我可以看到DynArraySetLength采用NativeInt参数...一个64位整数(我希望无符号,但不确定).那么为什么Length会返回一个16位有符号整数?这似乎等待发生麻烦,对吧?

我错过了什么?

delphi delphi-10.1-berlin

4
推荐指数
1
解决办法
324
查看次数

错误 F2063 无法编译使用的单元(依赖包的)

我编写了 2 个包:MEComps_DXE5 和 AMLComps_DXE5。后者取决于前者。两者都应该是多平台的:Win32、Win64 和(将来的)OSX。

当我打开第一个包 MEComps_DXE5 时,我可以编译、构建和安装它。我收到了一些警告,因为这个库包含的代码也必须在旧的 D5 上编译,但构建成功并在预期的地方创建了 dcu 和 dcp 文件。

当我打开第二个包 AMLComps_DXE5 时,发现这种情况:

  • 如果我不声明对 MEComps_DXE5 的依赖,该包将正确编译和构建(没有错误,生成 dcu 和 dcp 文件),但 Delphi 会警告我它已经从 MEComps_DXE5 隐式导入了单元,并要求我添加包到依赖项列表(需要)
  • 如果相关声明,则编译将失败"[dcc32 Fatal Error] MEComps_DXE5.dpk(52): F2063 Could not compile used unit 'MEClasses.pas'",其中MEClasses是MEComps_DXE5包的第一个单元。

我已经尝试解决这个问题几天了,但无济于事。我在两个方面工作:

  • 为什么 Delphi 甚至试图编译另一个包?我刚刚构建并安装了它,并且拥有所有 dcus 和 dcp。
  • 为什么编译失败?

至于第一个问题,我一点头绪也没有。

至于第二个问题,在这种情况下,文档是没有用的。它解释了为什么不能编译一个使用过的单元是致命的,并指出原因是通过查看以前的错误来确定的。但在这种情况下,没有以前的错误。

由于 MEComps_DXE5 实际上是自行编译和构建的,我怀疑这与语法或代码有什么关系。编译器似乎无法找到编译这些单元所需的东西。

这两个包分别驻留在自己的目录中。我将 MEComps\Win32 dcu 目录放在库路径和浏览路径上。IDE 实际上在查找使用的单位时没有问题。

我还检查了 dcc32 命令行,似乎编译器知道所有涉及的目录。

我可以添加的其他信息:

  • 两个包都有自己的包含文件(在它们的源目录中)。我不确定这些是否包含在包含列表的包中,但我已经尝试了两种方法,但似乎没有任何改变。
  • 这两个包都有一个相应的 Delphi 5 包,其中包含一些相同的单元和代码(尽管 dpk 不同)。这些编译和构建正确。Delphi 5 dcu 文件在源目录中生成。这会对 XE5 …

delphi dcc32 delphi-xe5

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

如何使用GridView/ListView实现SwipeRefreshLayout而不会截断视图?

如果我没有将OnScrollListener设置为如下所示,则在滚动到列表底部然后向上滚动后,ListView中的顶视图会被切断.

如下设置OnScrollListener似乎可行,但这似乎很奇怪,这是必需的.我希望Google能够修复此问题,而无需设置此监听器.有任何想法吗?

    mListView.setOnScrollListener(new OnScrollListener() {

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
        }

        @Override
        public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

            if (firstVisibleItem == 0 && visibleItemCount > 0 && absListView.getChildAt(0).getTop() >= 0) {
                mSwipeToRefreshLayout.setEnabled(true);
            } else {
                mSwipeToRefreshLayout.setEnabled(false);
            }
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

android listview gridview

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

让java args成为Arraylist不会工作

由于以下问题,我几乎吓坏了:

public class FileMate {

   public static void main(String[] args) {

      Walker walker = new Walker();

      int mode = Integer.parseInt(args[0]);
      Checker.mode = mode;

      List<String> drives = new ArrayList<String>();

      for (int i=1; i == args.length; i++) {
         drives.add(args[i]+":\\");
      }

      for (String path : drives) {
         walker.walk(path);
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

第一个参数是一个整数,并成功分配给"模式".但应将驱动器号分配给列表"驱动器"的部分在运行时跳过.我已经逐步调试它,args数组包含模式和2个驱动器号.

java

0
推荐指数
1
解决办法
53
查看次数