小编Ham*_*sby的帖子

用于更改单元名称及其所有引用的工具

如果我对单元进行重大更改,我想更改其名称以明确这是一个不同的版本,并避免与其他存档版本混淆,例如:CSVUtils.PAS成为CsvUtilsNew.PAS

但是必须手动更改其他单位对它的所有引用,例如:

Unit ManiForm

Uses
  CSVUtils 
Run Code Online (Sandbox Code Playgroud)

Unit ManiForm

Uses
  CsvUtilsNew
Run Code Online (Sandbox Code Playgroud)

这在复杂的项目中非常费力.

伊卡洛斯非常善于找到所有参考文献,但我找不到任何可以自动更新所有其他单位的工具.

有谁知道任何自动更新单位参考的工具?

非常感谢

delphi pascal

8
推荐指数
3
解决办法
1845
查看次数

Delphi:如何查找和修复EOutOfMemory错误?

我正在构建一个进行科学模拟的delphi应用程序.它的复杂程度越来越高,现在由许多单位和形式组成.

我每次跑步时都会开始出现EOutOFMemory错误.它似乎发生在我在函数中临时使用变量数组期间或之后.有可能提出一个非常愚蠢的问题,是"变种阵列"要求麻烦吗?(我可以将所有内容转换为字符串,但原则上的变体数组可以节省很多捏造的东西).

有问题的数组使用可能是:

 Function  TProject.GetCurrentProjParamsAsArray(LProjectName, LProjectType : ShortString): ArrayOfVariant;
Var
  ArrayIndex : Word;
begin
    SetLength (Result,54);
    ArrayIndex := 0;
    Result [ArrayIndex] := LProjectName;        Inc(ArrayIndex);
    Result [ArrayIndex] := LProjectType;        Inc(ArrayIndex);                   // this structure makes it easier to add extra fields in the DB than hard coding the array index!!
    Result [ArrayIndex] := FileTool.DateTimeForFileNames    ;    Inc(ArrayIndex);
    Result [ArrayIndex] := SiteAndMet.  SiteName            ;    Inc(ArrayIndex);
    Result [ArrayIndex] := SiteAndMet.  PostCode            ;    Inc(ArrayIndex);
    Result [ArrayIndex] := SiteAndMet.  MetFileNamePath     ;    Inc(ArrayIndex);
    Result [ArrayIndex] := SiteAndMet.  SiteLat …
Run Code Online (Sandbox Code Playgroud)

delphi vcl pascal

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

任何扫描代码并给出调用给定函数的函数列表的工具

这是我的问题,我正在整理一些我多年来修改过的旧代码并删除了redundent函数,

我可以用缓慢的方式来做它并将其注释掉,看看编译器是否会抛出错误.但我只是想知道是否有任何工具可以扫描代码并给出调用给定函数的函数列表.

我曾经看过ge-experts和icarus,但他们只在单位和类别的水平上执行此操作而不是功能.

欢迎任何建议,非常感谢,Brian

delphi pascal

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

在Delphi中调用C++ DLL的问题

我在delphi中调用C++ DLL时遇到一些问题,DLL是用Labview编写的,但DLL语法都是C++,我认为主要问题是尝试将数据作为动态数组传递给函数(其中本来就是一个指针对吗?)

.h头文件中的函数定义是:

int16_t __cdecl NRELIVparExtract(
  double voltageV[], 
  double currentA[], 
  int32_t nDataPoints, 
  uint16_t fitAlgorithim, 
  int16_t *twoOrLessPoints, 
  double *Voc, 
  double *Isc, 
  double *Vmp, 
  double *Imp
);
Run Code Online (Sandbox Code Playgroud)

我试图用来调用它的delphi代码是:

public   { Public declarations }
end;

 var
    Function NRELIVparExtract (voltageV, currentA: Array of Double; nDataPoints :Integer;
            fitAlgorithim :Word; Var twoOrLessPoints : SmallInt;
       Voc, Isc, Vmp, Imp : Double): smallint ; CDecl;External IVparExtract_NREL.dll'
Run Code Online (Sandbox Code Playgroud)

胡说

procedure TFormMainIVanalysis.ExtractNREL(InputFileName : ShortString);
var
  VoltArray, CurrArray : Array Of double;
  blah
Begin

  NRELresult := NRELIVparExtract(VoltArray,CurrArray,NpointsForFitting, fitAlgorithm,     twoOrLessPoints, LVoc, LISc, LVmpp, …
Run Code Online (Sandbox Code Playgroud)

c delphi labview

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

SELECT DISTINCT INTO语法错误interbase sql

我正在尝试使用以下语法制作只包含不同值的表的副本:

SELECT DISTINCT *
INTO :TAB_DISTINCT
FROM TAB_MAIN
Run Code Online (Sandbox Code Playgroud)

但是IB并不喜欢INTO系列(用该系列评论建立一个好的计划)无效的令牌.动态SQL错误.SQL错误代码= -104.令牌未知 - 第2行,char -1.INTO.

我已尝试使用和不使用冒号,也有没有空的预先存在的TAB_DISTINCT并设置了字段.但没有雪茄.

任何人都有任何线索我在这里做的笨蛋语法错误?非常感谢,Brian

sql firebird interbase

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

如何使用Delphi读取文本文件中的最后一行

我需要阅读一些非常大的文本文件中的最后一行(从数据中获取时间戳).TStringlist是一个简单的方法,但它返回一个内存不足的错误.我正在尝试使用seek和blockread,但缓冲区中的字符都是无意义的.这与unicode有关吗?

    Function TForm1.ReadLastLine2(FileName: String): String;
    var
      FileHandle: File;
      s,line: string;
      ok: 0..1;
      Buf: array[1..8] of Char;
      k: longword;
      i,ReadCount: integer;
    begin
      AssignFile (FileHandle,FileName);
      Reset (FileHandle);           // or for binary files: Reset (FileHandle,1);
      ok := 0;
      k := FileSize (FileHandle);
      Seek (FileHandle, k-1);
      s := '';
      while ok<>1 do begin
        BlockRead (FileHandle, buf, SizeOf(Buf)-1, ReadCount);  //BlockRead ( var FileHandle : File; var Buffer; RecordCount : Integer {; var RecordsRead : Integer} ) ;
        if ord (buf[1]) <>13 then         //Arg to integer …
Run Code Online (Sandbox Code Playgroud)

delphi ascii pascal delphi-xe2

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

为什么我的广播组中的按钮都表现得像他们在一个组中?

在Delphi 2010中,我将2个无线电组放在一个表单上,然后为每个组添加了2个按钮.所以共有4个按钮.

问题是按钮的Checked属性就好像所有4个按钮都在同一个无线电组中一样.即,任何时候都只能检查4个按钮中的1个.在设计和运行时都是如此.

  object RadioGroup1: TRadioGroup
    Left = 14
    Top = 314
    Width = 177
    Height = 35
    Caption = 'Series 2 Axis'
    TabOrder = 14
  end
  object RButtonLeftAxis: TRadioButton
    Left = 91
    Top = 326
    Width = 41
    Height = 17
    Caption = 'Left'
    TabOrder = 12
    OnClick = RButtonLeftAxisClick
  end
  object RButtonRightAxis: TRadioButton
    Left = 138
    Top = 326
    Width = 45
    Height = 17
    Caption = 'Right'
    Checked = True
    TabOrder = 13
    TabStop = …
Run Code Online (Sandbox Code Playgroud)

delphi radio-button

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

使Delphi XE项目能够在早期版本中运行 - 使用命名和项目选项

任何人都可以提醒我,允许早期版本的Delphi(例如2010)接受在更高版本中编写的具有domain.sub-domain命名系统的单元的技巧是什么

    // Delphi XE2 & later version (comment out for 2010 & earlier):
      uses
        Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,system.Classes, Vcl.Graphics,
        Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons,
        Vcl.ExtCtrls, Vcl.ComCtrls, System.Math;
Run Code Online (Sandbox Code Playgroud)

而不是D2010和早期的会议

    // Delphi 2010 & earlier version (comment out for XE2 & later):
      uses
        Windows, Messages, SysUtils, Variants, Classes, Graphics,
        Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, Math;
Run Code Online (Sandbox Code Playgroud)

我知道你可以在项目>选项中做些什么但是找不到它并且无法找到关于这个主题的早期论坛帖子.

delphi

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

字符串到缓冲区的额外空格 Filestream.WriteBuffer 方法中隐式的 void 类型转换

有一段时间不需要在这里发帖了,但我在实现文件流时遇到了问题。将字符串写入文件流时,结果文本文件在每个字符之间插入了额外的空格

所以当运行这个方法时:

Function TDBImportStructures.SaveIVDataToFile(const AMeasurementType: integer;
  IVDataRecordList: TIV; ExportFileName, LogFileName: String;
  var ProgressInfo: TProgressInfo): Boolean; // AM
var
  TempString: unicodestring;
  ExportLogfile, OutputFile: TFileStream;
begin
  ExportLogfile := TFileStream.Create(LogFileName, fmCreate);
  TempString :=
    'FileUploadTimestamp, Filename, MeasurementTimestamp, SerialNumber, DeviceID, PVInstallID,'
    + #13#10;
  ExportLogfile.WriteBuffer(TempString[1], Length(TempString) * SizeOf(Char));
  ExportLogfile.Free;

  OutputFile := TFileStream.Create(ExportFileName, fmCreate);
  TempString :=
    'measurementdatetime,closestfiveseconddatetime,closesttenminutedatetime,deviceid,'
    + 'measuredmoduletemperature,moduletemperature,isc,voc,ff,impp,vmpp,iscslope,vocslope,'
    + 'pvinstallid,numivpoints,errorcode' + #13#10;
  OutputFile.WriteBuffer(TempString[1], Length(TempString) * SizeOf(Char));
  OutputFile.Free;
end;
Run Code Online (Sandbox Code Playgroud)

(这是一种精简的测试方法,仅写入标题)。“OutPutFile”生成的 csv 文件读取

'measuredmoduletempera ture等在写字板中查看时,但不是在excel、记事本等中查看。我猜测它的SizeOf(Char)语句在unicode上下文中是错误的,但我不确定什么是正确的插入此处。“ExportLogfile”似乎工作正常,但“OutPutFile”不行

从我在其他地方读到的内容来看,这是问题所在,而不是写字板,请参阅http://social.msdn.microsoft.com/Forums/en-US/7e040fd1-f399-4fb1-b700-9e7cc6117cc4/ unicode-to-files-and-console-vs-notepad-wordpad-word-etc?forum=vcgeneral

大家有什么建议吗?非常感谢,布莱恩

delphi pascal filestream tfilestream

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

忽略/错过C++断点

我正在尝试运行一些别人给我的C++代码.起初有一个istream文件链接断开,我通过添加包含路径修复了这个链接:

C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\include\dinkumware
Run Code Online (Sandbox Code Playgroud)

代码现在编译但它不会在任何断点处停止,例如formcreate:

// Initialise the form and read in the module and inverter names.
void __fastcall TMain::FormCreate(TObject *Sender)
{
    ifstream inits;
    ifstream inverters;
    ifstream modules;
    char line[1000];
    AnsiString FTO;
    inits.open("PVSM.ini", ios::in);
    if (inits.is_open())
    {
            inits.getline(line,1000);
            AnsiString parmm(line);
            ModDir = parmm.SubString(1,parmm.Pos(" ")-1);
            inits.getline(line,1000);
            AnsiString parmi(line);
            InvDir = parmi.SubString(1,parmi.Pos(" ")-1);
            inits.getline(line,1000);
            AnsiString parmt(line);
            MetDir = parmt.SubString(1,parmt.Pos(" ")-1);
            inits.getline(line,1000);
            AnsiString parms(line);
            ShdDir = parms.SubString(1,parms.Pos(" ")-1);
            inits.getline(line,1000);
            AnsiString parmx(line);
            ExpDir = parmx.SubString(1,parmx.Pos(" ")-1);
    }
    else    // …
Run Code Online (Sandbox Code Playgroud)

c++ debugging breakpoints c++builder c++builder-2010

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