1

(23 replies, posted in Russian)

Попутно. Пытаюсь организовать подобный функционал для поиска самого нового файла в папке с выводом даты его изменения и размера.
Но что то ругается на

FindFirst
TSearchRec
TSystemTime

Вот собственно сам код.Найдено на просторах.Подправил под себя но..

procedure Form1_Button5_OnClick;
var
 sr: TSearchRec;
  fn: string;
 st: TSystemTime;
  dt,ft: TDateTime;
  pach: string;
  filen: string;
  pfile: string;

begin
  fn := '';
  dt := 0;

   pach:= VarToStr(SQLExecute('SELECT pach FROM lastfile'));
   filen:= VarToStr(SQLExecute('SELECT filename FROM lastfile'));
   //if Right(path, 1) <> '\' then
   pfile:= pach + '\' + filen ;
   //else pfile:= path + filen;
  try               
    if FindFirst(pfile, faAnyFile, TSearchRec) = 0 then
    repeat
      if sr.Attr = faDirectory then Continue;      
      FileTimeToSystemTime(sr.FindData.ftCreationTime, TSystemTime);
      ft := SystemTimeToDateTime(TSystemTime);
      if ft > dt then
      begin
        dt := ft;
        fn := TSearchRec.Name;
      end;
    until (FindNext(TSearchRec) <> 0);
  finally
    FindClose(TSearchRec);
  end;
  if fn = '' then ShowMessage('Нет Файлов')
  else ShowMessage('Самый новый файл: ' + fn);
end;

Может можно это реализовать как то по другому?

2

(23 replies, posted in Russian)

DriveSoft wrote:

У меня тоже такое наблюдается, к сожалению не знаю причину.

Добрый день. Поменял кусоче кода- задержку нормально показывает.

if PingEx(sHost, 5, AvgMs) then
        begin
           SQLExecute('UPDATE pings SET ms='+formatfloat('0.',AvgMs)+', ping = ("OK") WHERE id='+Results.FieldByName('id').asString);
        end else
        begin
            SQLExecute('UPDATE pings SET ms=NULL, ping = ("BAD") WHERE id='+Results.FieldByName('id').asString);
        end;

        Results.Next;

А именно вот тут

'+formatfloat('0.',AvgMs)+'

3

(23 replies, posted in Russian)

DriveSoft wrote:

33193
Сделал для вас проект с примером:

Здравствуйте. Спасибо. То что нужно.
Вот только не пойму, почему такая задерка большая.
К примеру пингую свой роутер, задержка 40мс.
cmd ping 192.168.5.1 = <1ms.

4

(23 replies, posted in Russian)

Здравствуйте. Помогите разобраться. Есть грид в котором имеется список IP адресов.
Можно ли сделать так что б брались по очереди данные из таблицы и соответственно в нее потом возвращались.
На данном этапе, на сколько я понимаю. берется одно значение и результат присваивается всем одинаковый...

procedure Form1_Button4_OnClick (Sender: TObject; var Cancel: boolean);
var
    AvgMs: Double;  s: string;
begin
    if PingEx(SQLExecute('SELECT ip FROM pings'), 5, AvgMs) then
    begin
     s:=(FloatToStr(AvgMs));
     SQLExecute ('UPDATE pings SET ping=1');
     SQLExecute ('UPDATE pings SET ms=("'+s+'")');
     end else
    begin
    SQLExecute ('UPDATE pings SET ping=0');
    SQLExecute ('UPDATE pings SET ms=("")');
    end;
    Form1.TableGrid2.dbUpdate;
end;