小编Gar*_*inn的帖子

Delphi,FindNext返回错误18,即使有一个文件夹

来自冰岛的问候!

首先,我搜索了谷歌和这里没有结果.

我在德尔福写作并且在Delphi工作了几年(在Pascal工作了30多年)

我已经构建了这些年来各种文件实用程序的程序,并在几乎所有这样的应用程序中使用了FindFirst和FindNext函数.今天我使用的是我编写的旧文件实用程序,发现它不起作用100%

直到目录名称有点奇怪,即内部有几个句点的名称,这是好的.故事是我正在安装Wamp,并且有一些文件夹以这种奇怪的方法命名.

As: "c:\wamp\apps\phpmyadmin3.4.5"
    "c:\wamp\apps\sqlbuddy1.3.3"
    "c:\wamp\apps\webgrind1.0 etc"
Run Code Online (Sandbox Code Playgroud)

当我进行调试时,我发现Findnext刚刚返回错误18,当找不到更多文件时,与FindNext返回的错误相同.

我尝试了FindFirstFile和FindNextFile,结果相同.我想尝试API FindNextFileEx,如果这与长文件名有关,但不是那么乐观.

另外我注意到这些文件夹中的属性不是16(hex10)而是8208(8192 + 16),但它与此问题没有任何关系,因为我可以例如使用$ 00屏蔽(AND)attr FF等

PROCEDURE TForm_Leit.Finna_Dir (Str_InnDir : STRING);
  VAR
    S_Rec1           : TSearchRec;
    Bo_Buid          : BOOLEAN;
BEGIN
  .
  .
  .
  //Find Dir part
  IF (FindFirst (Str_Inndir+'\*.', faDirectory, S_Rec1) = 0) THEN
  REPEAT
    Bo_Buid := FALSE;
    IF ((S_Rec1.Name = '.') OR (S_Rec1.Name = '..')) THEN
    REPEAT
      Bo_Buid := FindNext (S_Rec1) <> 0;
    UNTIL NOT((S_Rec1.Name = '.') OR (S_Rec1.Name = '..')) OR (Bo_BUid);

    IF NOT(Bo_Buid) THEN
      Finna_Dir (Str_Inndir+'\'+S_Rec1.Name); …
Run Code Online (Sandbox Code Playgroud)

delphi

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

SQL Server在创建表时自动命名索引

我是SQL Server的新手,(在1980年代后期确实学习过SQL,如果我还记得,那就是DB2)今天我将我的数据库层集成到SQL中,首先是SQL Server.

首先.正如我今天所做的那样,我将在运行时以编程方式生成每个数据库对象,表对象和索引,就像我对项目中的几乎所有视觉和数据对象一样.也就是说,我使用的视觉设计工具非常有限.

我项目中的每一列都有一个外部描述文件(每个用户都有包含这些文件的配置文件),就像我使用数据库键和视觉对象一样,效果如定位,长度,图片掩码,字体大小等等.即动态形式.几乎每个窗口,网格,过滤器都是在运行时创建的,就像我的大部分数据库连接一样.

我确实构建了一个小测试"机器"来在这个环境中创建表并且做得很好,很容易在程序中创建表(我使用delphi和ADO)

我遇到的问题是当我将列标记为"自动增量"或Identity在SQL Server中,或者如果我将列描述为主键,则SQL Server Management Studio会自动创建索引或键.

如果我可以管理它给这个索引或键的名称,那就没问题.

这种情况的例子:

    AdoCommand.CommandText := Str_SQL;
    TRY
      AdoCommand.Execute;
    FINALLY
      NotiFy_TimeOut ('Table was created', wait_for_one_sec);
    END;
Run Code Online (Sandbox Code Playgroud)

我的数据库引擎创建了这个SQL脚本,我将其传递给Str_SQL上面的字符串:

    CREATE TABLE GENGITFL 
    (
      NR INT NOT NULL IDENTITY,
      GJM CHAR(3) NOT NULL,
      HEITI VARCHAR(25) NOT NULL,
      KAUPG REAL NULL,
      SOLUG REAL NULL,
      TOLLG REAL NULL,
      DUMMY VARCHAR(20) NULL,
    UNIQUE (GJM),
    PRIMARY KEY (GJM)
    )
Run Code Online (Sandbox Code Playgroud)

SQL Server自动创建这两个索引:

  • PK__GENGITFL__C51F17260A463F49
  • UQ__GENGITFL__C51F17277FA3E6E6

我不想将这些名称用于这些文件,我更喜欢名字:

  • IDX_GENGITFL_GJM
  • IDX_GENGITFL_NR

根据我的介绍,原因应该是显而易见的,运行时引擎无法自动创建这些名称,我认为它不是查找系统数据库中可用的索引文件的选项.如果我的外部描述说应该有索引,我想只是通过使用前缀,IDX_下一个表名称和最后的字段名称或名称与下划线之间自动创建索引的名称,IDX_GENGITFL_GJM等等.

希望有人理解我糟糕的英语和演讲.我的英语很生气.

谢谢

编辑:在marc_s的帮助下,我的SQL"脚本"是这样的: …

sql-server ado

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

标签 统计

ado ×1

delphi ×1

sql-server ×1