未使用 Delphi 警告值[已关闭]

zy1mlcev  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(93)

已关闭此问题为not reproducible or was caused by typos。它目前不接受回答。

此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
3天前关闭。
Improve this question
在下面的代码中,我得到了一个警告,没有使用日志日期的值。

Logdate := strtodatetime('1/1/1999 10:10:10');

但在代码中,它显然被使用了。原因是:我将该值设置为已知值。然后将其与已知值进行比较。

if logdate <> strtodatetime('1/1/1999 10:10:10') then

如果是真的,我知道logdate没有更新或需要。
有没有什么我可以做得更好,没有得到这个警告?

procedure CheckForOldLogs;
var
  SearchRec: TSearchRec;
  SourceFile, DestFile, LogDateStr: string;
  LogDate: TDateTime;
  LogFile: TextFile;
  CleanedFileName: string;
  oldflag: integer;
begin
  // Set the path for log files
  SourceFile := ExtractFilePath(Application.ExeName) + 'logfiles\*.*';

  // Find the first file in the logfiles folder
  if FindFirst(SourceFile, faAnyFile, SearchRec) = 0 then
  begin
    repeat
      Logdate := strtodatetime('1/1/1999 10:10:10');
      oldFlag := 0;
      // Check if the found file is not a directory
      if (SearchRec.Attr and faDirectory) = 0 then
      begin

        // Create the full file paths
        SourceFile := ExtractFilePath(Application.ExeName) + 'logfiles\' + SearchRec.Name;
        DestFile := ExtractFilePath(Application.ExeName) + 'logfilesOld\' + SearchRec.Name;

        // Read the first line of the file (date)
        AssignFile(LogFile, SourceFile);
        Reset(LogFile);
        try
          Readln(LogFile, LogDateStr);
          LogDate := StrToDate(LogDateStr);
        finally
          CloseFile(LogFile);
        end;

        // Check if the date is older than 30 days
        if DaysBetween(Date, LogDate) > 30 then
        begin
          // Move the file to logfilesOld folder
          RenameFile(SourceFile, DestFile);
          OldFlag := 1;
        end;
        if logdate <> strtodatetime('1/1/1999 10:10:10') then
          begin
             CleanedFileName := StringReplace(SearchRec.Name, '_', ' ', [rfReplaceAll]);
             CleanedFileName := ChangeFileExt(CleanedFileName, '');
             if oldflag = 0 then
             form1.CBLog.Items.Add(CleanedFileName);
          end;
      end;
    until FindNext(SearchRec) <> 0;
    FindClose(SearchRec);

  end;
end;
jpfvwuh4

jpfvwuh41#

在代码中,你连续两次无条件地赋值给变量,所以编译器知道第一次赋值不会被使用:

Logdate := strtodatetime('1/1/1999 10:10:10');

如果您要编写另一个无条件赋值,则会有两个提示
这是编译器的第二个唯一有效的赋值

LogDate := StrToDate(LogDateStr);

相关问题