Delphi консультации (бесплатно)

  • Автор теми Автор теми crghome
  • Дата створення Дата створення
Кури ShellExecute!
 
Посмотрите в сторону jungo software - windriver
Мы юзаем, очень удобно.
 
Не очень
У меня прошлое по четко 2 раза в милисекунду собирает данные
Второй поток обрабатывает, но уже не так привязанно ко времени
За задержки при сборе - ********

чёто весьма сомнительно чтобы аппликейшен-левел код мог двух миллисекундные события процессить. В винде квант времени 10 ms и тайм-слайс 130 ms (если не переключаться в режим realtime).
Какие 2 ms? :confused: Под виндой с такими условиями ******** гарантирован даже если писать на асме.
 
не 2 мс, а 1/2 мс
Работает)

Аппаратно-программно.
Сорри - подробно не могу говорить. Но работает, 100%

Jungo при умелом пользовании и хорошем электронщике творит чудеса

Хотя под Win7 грабли есть, но блин уже кода немеряно - а переводить на новую ось это ОЧЕНЬ дорого и долго
Лично мне очень нра Qnx, но это реально дорого и кому я нужен на рынке со знанием Qnx потом, если на нее "затачиваться"
Игрался с ней пару недель, действительно хорошо сделана.
 
Квантование времени можно уменьшить до 1 мс без каких либо ухищрений.

конечно, но только если вызвать timeBeginPeriod. А это заметно снижает производительность и сильно привязывает поведение софта к конкретному железу (на разном железе/версии винды разрешение может быть разным). И то, до 1 мс можно уменьшить не на любой связке железа/винды. В некотороых случаях 10 мс - минимум.
У меня на работе был как-то комп, на котором менее 10 мс снизить не удавалось. Там-же QueryPerformanceFrequency выдавала какое-то аномально низкое значение.

И разве можно снизить time slice до значений менее 1 мс? При таких условиях наверно половина мощи компа (а то и больше) уйдет на планировщик задач :)
Все это выглядит как потуги сделать RTOS из винды :D

не 2 мс, а 1/2 мс
Работает)

и как удалось этого добиться от винды? В нормальном режиме time slice 130 мс, следовательно система тупо будет отбирать управление на 130 мс. Как-же удается обрабатывать все эвенты какждые 0.5 мс не теряя управление на 130 мс?
 
Останнє редагування:
ТС, нужно батник в кнопку засунуть, и чтобы при нажатие кнопки, иполнялся код этого батника. Это реально сделать? Или только чтением из файла?
What it's "батник"?
If "батник" = File of TBitmap then
begin
Чтением из файла производить визуализацию компонента не правильно (ИМХО). Лучше:
1) создать файл .res и производить чтение из потока, напр:
Код:
...
implementation
uses Jpeg;
{$R *.dfm}
{$R Data.res}

procedure TForm2.FormActivate(Sender: TObject);
var
  MyJPG:TJpegImage;           // Объект - JPEG
  ResStream: TResourceStream; // Объект - поток ресурсов
begin
  try
    MyJPG := TJPEGImage.Create;
    ResStream := TResourceStream.CreateFromID(HInstance, 1, RT_RCDATA);
    MyJPG.LoadFromStream(ResStream); 
    Form2.Image1.Canvas.Draw(0,0,MyJPG);
  finally
  end;
  Form2.Label3.Caption:='Ver: 3.03.07';
  ver:=0;
  MyJPG.Free;
  ResStream.Free;
end;
...
2)В Delphi есть свой механизм добавления ресурсов, добавлять через него;
3)Использовать TListImage (минус в том, что изображения должны быть одинаковы по размерам)
Все три метода читают картинку с потока, это быстрее чем с файла, плюс картинка уже в программе (в exe файле) и нет необходимости проверки наличия файла, и наибольший плюс картинка "не потеряется"!.
На счет "и чтобы при нажатие кнопки, иполнялся код этого батника" - не понял, Вам необходим различные процедуры зависящие от картинки или простое BottonClick? В любом случае реализация простая, в зависимости что необходимо.
end;
 
Код:
...
implementation
uses Jpeg;
{$R *.dfm}
{$R Data.res}

procedure TForm2.FormActivate(Sender: TObject);
var
  MyJPG:TJpegImage;           // Объект - JPEG
  ResStream: TResourceStream; // Объект - поток ресурсов
begin
  try
    MyJPG := TJPEGImage.Create;
    ResStream := TResourceStream.CreateFromID(HInstance, 1, RT_RCDATA);
    MyJPG.LoadFromStream(ResStream); 
    Form2.Image1.Canvas.Draw(0,0,MyJPG);
  finally
  end;
  Form2.Label3.Caption:='Ver: 3.03.07';
  ver:=0;
  MyJPG.Free;
  ResStream.Free;
end;
...
*** там try finally не задумывался? Или ты как туземцы из племени тумба юмба - видел что белые люди нажимают кнопочки на радио и что-то говорят а им бог с неба посылки шлет. Так и себе тоже решили сделать коробочку с трубочкой в которую говорить.
 
Посмотрите в сторону jungo software - windriver
Мы юзаем, очень удобно.

Я сам юзал виндрайвер для девелопмента :клас:, только я как то не увидел, что он дает возможность написать сам драйвер на С# ;)
Я не имею в виду тест-сампл аппликешн который юзает созданный драйвер (давайте всетаки отделять мух от котлет) ;)
 
Мы юзаем старую версию, там нет c#
В новом вроде есть
Kx, естественно, пишется на сях )
Зы загрузка проца при работе по что то около 5 или 10 процентов на сбор. Но сдается мне винда просто не а состоянии правильно это посчитать с нашими железками )))
 
... там try finally не задумывался?
Как то нет. Что то вроде следующего - "видел что белые люди нажимают кнопочки на радио и что-то говорят а им бог с неба посылки шлет. Так и себе тоже решили сделать коробочку с трубочкой в которую говорить." А если рассматривать детальнее секцию программного обработчика ошибок то лучше использовать except. (Пример предоставлен как рассмотрение работы с потоком ресурсов, а не обработкой исключений).

Благодарю.

.bat - run next
Код:
shellapi.ShellExecute(0, 'Open', PChar(FileName), nil, nil, sw_SHOWNORMAL);
OR
shellapi.WinExec('c:\testcua.bat', SW_SHOW);
PS/ Не смог проверить из-за отсутствия таковых файлов (с программными скриптами пока еще не работал)
 
Как то нет. Что то вроде следующего - "видел что белые люди нажимают кнопочки на радио и что-то говорят а им бог с неба посылки шлет. Так и себе тоже решили сделать коробочку с трубочкой в которую говорить." А если рассматривать детальнее секцию программного обработчика ошибок то лучше использовать except. (Пример предоставлен как рассмотрение работы с потоком ресурсов, а не обработкой исключений).
Тry Finally для обработки исключений? Жжжош парень, жжош. А так да - except для этого посподручнее юзать. Заглушить все ошибки, а там хуть трава не расти.

Мне нужно сделать так, чтобы данные из батника никто не спер. Поэтому чтетие из файла не катит блин :(


P.S - автор темы, я тебе в ЛС написал, прочти пожалуйста мои сообщения.
Нутак а если в ShellExecute текст батника передать не выполнится?
 
Останнє редагування:
Тry Finally для обработки исключений?
Код:
try
//попытка ваполнения
except
//обработка исключений OR/AND вывод сообщения и т.п.
  on E: Exception do
    Application.ShowException(E);
finally
//в случае удачного окончания
Так же можно при помощи ключей
Код:
{$I-}
Reset(f); // открыть файл для чтения
{$!+}
res := IOResult;
  if res <> 0 then //обработка ошибки
Либо в качественных проектах
Код:
procedure TMainForm.MainException(Sender: TObject; E: Exception);
begin
.....
end;
Порой заглушить Вин ошибку лучше, чем читать не понятное сообщение про память которая не может быть read.


Нутак а если в ShellExecute текст батника передать не выполнится?
Это вопрос или сарказм?
 
Заглушить AV это, конечно, круто.
Вообще - откройте для себя EurekaLog.
Мы купили и довольны.
Ну или хотя бы FastMM
 
Код:
try
//попытка ваполнения
except
//обработка исключений OR/AND вывод сообщения и т.п.
  on E: Exception do
    Application.ShowException(E);
finally
//в случае удачного окончания
<сарказм>Ты точно в этом уверен? А в случае неудачного finally не сработает?</сарказм>

Так же можно при помощи ключей
Код:
{$I-}
Reset(f); // открыть файл для чтения
{$!+}
res := IOResult;
  if res <> 0 then //обработка ошибки
Причем тут это старье? Какой вменямый человек использует это в новых проектах?
Либо в качественных проектах
Код:
procedure TMainForm.MainException(Sender: TObject; E: Exception);
begin
.....
end;
Порой заглушить Вин ошибку лучше, чем читать не понятное сообщение про память которая не может быть read.
Рано тебе еще рассуждать про качественные проекты. В качественных проектах:
1. AV не валятся
2. За попытки заметать их под ковер анально карают
3. Используют что-то типо ЕurekaLog

Это вопрос или сарказм?
Это вопрос, но не к тебе.
 
:рл:
что ж.. пишите, Шура, пишите(с) :D Чем больше таких писак, тем больше будет работы у меня. ;)
Продолжай в том же духе :клас:
:іржач::іржач::іржач:

"*****, нє?" (с)

Эти приблуды работают уже лет семь. И из-под приложения написанного на нативном С и дотНет С++ и из-под Excel-а. Так шо работай над собой.
Мир разнообразен.
 
Рано тебе еще рассуждать про качественные проекты. В качественных проектах:
1. AV не валятся
2. За попытки заметать их под ковер анально карают
3. Используют что-то типо ЕurekaLog
Знаешь даже поражен. Твой постоянный взгляд с верха, но иногда даешь ценные советы.
 
Знаешь даже поражен. Твой постоянный взгляд с верха, но иногда даешь ценные советы.
Брат ну а как на тебя смотреть после того кода, который ты тут показал? Вот так почеснаку без *****ов?
 
Назад
Зверху Знизу