有人可以帮助我进行 VFP 路径和包含吗?

问题描述 投票:0回答:1

我从2.6开始就开始编写foxpro。在过去的 15 或 20 年里,我一直使用 Visual FoxExpress 框架。我想我已经太习惯我的框架了,基本的 FoxPro 的东西对我来说仍然难以捉摸。我花了几周的时间来思考一些基本概念。我正在寻求帮助。

我有一个项目。该项目有许多我已包含在项目中的程序。当我使用“重新编译全部”和“显示错误”功能重建项目时,有时 prg 不会重新编译。我删除了 fxp 并通过添加注释来修改 prg,以确保重新编译 prg。这似乎有效,但似乎它们没有被编译,因为创建了一个名为 myprogram.err 的文件。 VFP 编译器没有告诉我有任何错误,但我确实看到了 myprogram.err 文件。 myprogram.prg 中的第一行可执行代码是 #INCLUDE WCONNECT.H WCONNECT.H 也包含在我的项目中的文本文件下。 myprogram.err 显示“#INCLUDE WCONNECT.H 第 4 行错误:文件不存在。”。我想我的第一个问题是,如果包含的 prg 也包含在项目中,它怎么会找不到 wconnect.h?

谢谢约翰

visual-foxpro
1个回答
0
投票

我也为此感到沮丧

有时 prg 不会被重新编译

问题,所以我写了一个小prg(rcompile.prg)来显式编译所有内容。从那时起,我不再信任“重新编译全部”并使用 rcompile.prg。这是rcompile.prg的代码:

Lparameters tcProjectName, tlNonVerbose
If !Empty(m.tcProjectName) And Type('_vfp.ActiveProject') = 'U'
  Modify Project (m.tcProjectName) Nowait
Endif

If Type('_vfp.ActiveProject') = 'U'
  Return
Endif
Set Notify off
LOCAL ix,totalFiles
ix = 0
totalFiles = 0
For Each loFile In _vfp.ActiveProject.Files
  If loFile.Type $ 'PKV'
    totalFiles = m.totalFiles + 1
  ENDIF
endfor

? 'Total', m.totalFiles
For Each loFile In _vfp.ActiveProject.Files
  If !m.tlNonVerbose And loFile.Type $ 'PKV'
    ix = m.ix + 1
    ? m.ix, loFile.Name
  Endif

  Do Case
    Case loFile.Type = 'P'
      Compile (loFile.Name)
    Case loFile.Type = 'K'
      Compile Form (loFile.Name)
    Case loFile.Type = 'V'
      Compile Classlib (loFile.Name)
      *!*   Case loFile.Type = 'R'
      *!*     Compile Report (loFile.Name)
  ENDCASE
Endfor
Set Notify on

您可以将项目的文件名传递给它,或者项目管理器中打开了一个活动项目。

我无法回答问题的第二部分,这很奇怪。我不会试图寻找原因,而是将 wconnect.h 放置在编译(以及一般开发)期间默认搜索路径中的文件夹中。

我在我的工具\选项\文件位置\搜索路径集中设置了此设置:

progs; forms; libs; menus; other; reports; include; bitmaps; datainclude; d:\foxyclasses\classes; d:\vfpcommonclasses
Include 文件夹下的

和.H 文件。所有项目具有相同的文件夹结构,这效果很好(我可以单独测试 prg、scx 等,而无需重新编译所有项目)。我几乎只在发布之前编译整个项目。

© www.soinside.com 2019 - 2024. All rights reserved.