我刚刚在我的机器上创建了一个空数据库.我现在希望将一个表从我们的服务器数据库复制到这个本地数据库.
我需要运行哪些sql命令才能执行此操作?我希望创建新表,从旧表复制数据并将其插入新表.
我正在尝试编写包含特定类型记录的通用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) 我有一个在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位有符号整数?这似乎等待发生麻烦,对吧?
我错过了什么?
我编写了 2 个包:MEComps_DXE5 和 AMLComps_DXE5。后者取决于前者。两者都应该是多平台的:Win32、Win64 和(将来的)OSX。
当我打开第一个包 MEComps_DXE5 时,我可以编译、构建和安装它。我收到了一些警告,因为这个库包含的代码也必须在旧的 D5 上编译,但构建成功并在预期的地方创建了 dcu 和 dcp 文件。
当我打开第二个包 AMLComps_DXE5 时,发现这种情况:
"[dcc32 Fatal Error] MEComps_DXE5.dpk(52): F2063 Could not compile used unit 'MEClasses.pas'",其中MEClasses是MEComps_DXE5包的第一个单元。我已经尝试解决这个问题几天了,但无济于事。我在两个方面工作:
至于第一个问题,我一点头绪也没有。
至于第二个问题,在这种情况下,文档是没有用的。它解释了为什么不能编译一个使用过的单元是致命的,并指出原因是通过查看以前的错误来确定的。但在这种情况下,没有以前的错误。
由于 MEComps_DXE5 实际上是自行编译和构建的,我怀疑这与语法或代码有什么关系。编译器似乎无法找到编译这些单元所需的东西。
这两个包分别驻留在自己的目录中。我将 MEComps\Win32 dcu 目录放在库路径和浏览路径上。IDE 实际上在查找使用的单位时没有问题。
我还检查了 dcc32 命令行,似乎编译器知道所有涉及的目录。
我可以添加的其他信息:
如果我没有将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) 由于以下问题,我几乎吓坏了:
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个驱动器号.
delphi ×3
android ×1
collections ×1
dcc32 ×1
delphi-xe5 ×1
generics ×1
gridview ×1
java ×1
listview ×1
sql ×1
sql-server ×1