Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
expoox
Tvůrce
Avatar
expoox:29.3.2013 12:33

Zdravim, nedavno v jednej programatorskej sutazi nam poskytli kontrolny program. Do toho programu som si nacital svoje napisane execko a ten kontrolny program mi nasledne vypisal ako dlho pracovalo to moje execko a toto ma zaujima, ako to zrobili? Ako viem merat cas chodu inej aplikacie + nacitat tu aplikaciu ? Ten kontrolny program bol napisany v Delphi, preto to pisem sem ale pomohlo by mi riesenie aj pre C, dakujem

 
Odpovědět
29.3.2013 12:33
Avatar
Luboš Běhounek Satik:29.3.2013 13:11

Začneš měřit čas, spustíš program, počkáš až program skončí a stopneš čas a máš změřeno.
V C# třeba takhle:
http://support.microsoft.com/kb/305369

Nahoru Odpovědět
29.3.2013 13:11
https://www.facebook.com/peasantsandcastles/
Avatar
expoox
Tvůrce
Avatar
expoox:29.3.2013 13:22

no to si mi velmi nepomohol, ako spustim ten program na pozadi, ako otestujem ci uz bezi, ako otestujem kedy skonci ? ....

 
Nahoru Odpovědět
29.3.2013 13:22
Avatar
Nahoru Odpovědět
29.3.2013 13:25
https://www.facebook.com/peasantsandcastles/
Avatar
expoox
Tvůrce
Avatar
expoox:29.3.2013 14:03

nevedel by si mi to trosku vysvetlit? nie som na takej urvoni zeby som chapal take prikazy... napr kde nacitavam program (teda cestu k nemu) ? , etc.

 
Nahoru Odpovědět
29.3.2013 14:03
Avatar
Odpovídá na expoox
Luboš Běhounek Satik:29.3.2013 14:36

Cela ta funkce nejspis jen spusti exac, kterej ji zadas a ceka, dokud ho nevypnes. Asi je tam preklep, misto "PChar(fsExe)" ma asi byt "PChar(sExe)"
jinak myslim, ze ten vnitrek ani nejak detailne chapat nepotrebujes, kdyztak si ty funkce postupne vygoogli, myslim, ze to pak pochopis.

Nahoru Odpovědět
29.3.2013 14:36
https://www.facebook.com/peasantsandcastles/
Avatar
expoox
Tvůrce
Avatar
expoox:29.3.2013 14:47

ok len este co cakaju odomna parametre tej funkcie ?

 
Nahoru Odpovědět
29.3.2013 14:47
Avatar
Odpovídá na expoox
Luboš Běhounek Satik:29.3.2013 14:52

Prvni asi jmeno EXE souboru, druhej asi parametry (muzes nechat prazdne).

Nahoru Odpovědět
29.3.2013 14:52
https://www.facebook.com/peasantsandcastles/
Avatar
expoox
Tvůrce
Avatar
expoox:29.3.2013 15:39

no tolko errorov po kope som este nevidel... netreba mu neaku kniznicu na to ? pripojil som shellapi a windows ale bezvysledne

 
Nahoru Odpovědět
29.3.2013 15:39
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na expoox
David Hartinger:29.3.2013 16:03

Ty errory většinou na něco upozorňují, je dobré se nad nimi zamyslet nebo je sem poslat :)

Nahoru Odpovědět
29.3.2013 16:03
You are the greatest project you will ever work on.
Avatar
expoox
Tvůrce
Avatar
expoox:29.3.2013 16:08

no to ano, len pri takom mnozstve mi z toho zamyslenia vychadza len to ze tej funkcii chyba kniznica ...

unit1.pas(40,14) Error: Identifier not found "ExecAndWait"
unit1.pas(40,21) Error: Identifier not found "skuska"
unit1.pas(54,34) Error: Identifier not found "TProcessInformation"
unit1.pas(54,34) Error: Error in type definition
unit1.pas(58,22) Hint: Local variable "tsiStartup" does not seem to be initialized
unit1.pas(60,19) Error: Identifier not found "CreateProcess"
unit1.pas(61,30) Error: Identifier not found "tpi"
unit1.pas(63,22) Error: Identifier not found "WAIT_OBJECT_0"
unit1.pas(63,43) Error: Identifier not found "WaitForSingleObject"
unit1.pas(63,55) Error: Illegal qualifier
unit1.pas(63,73) Error: Identifier not found "INFINITE"
unit1.pas(65,28) Error: Identifier not found "GetExitCodeProcess"
unit1.pas(65,40) Error: Illegal qualifier
unit1.pas(67,12) Warning: Local variable "dwExitCode" does not seem to be initialized
unit1.pas(70,23) Error: Identifier not found "SetLastError"
unit1.pas(73,31) Error: Identifier not found "GetLastError"
unit1.pas(74,16) Error: Identifier not found "CloseHandle"
unit1.pas(74,28) Error: Illegal qualifier
unit1.pas(75,16) Error: Identifier not found "CloseHandle"
unit1.pas(75,28) Error: Illegal qualifier
unit1.pas(76,17) Error: Identifier not found "SetLastError"
unit1.pas(82) Fatal: There were 19 errors compiling module, stopping

teraz ma este napada ze problem moze byt v tom ze robim v lazaruse a nie v delphi

 
Nahoru Odpovědět
29.3.2013 16:08
Avatar
Odpovídá na expoox
Luboš Běhounek Satik:29.3.2013 16:08

mozna ti chybi neco v uses, zkus ty prikazy jeden po druhym vyhledat, kam patrej :)

Nahoru Odpovědět
29.3.2013 16:08
https://www.facebook.com/peasantsandcastles/
Avatar
expoox
Tvůrce
Avatar
expoox:29.3.2013 16:13

uz sa to zredukovalo na

unit1.pas(40,14) Error: Identifier not found "ExecAndWait"
unit1.pas(40,21) Error: Identifier not found "skuska"
unit1.pas(58,22) Hint: Local variable "tsiStartup" does not seem to be initialized
unit1.pas(61,30) Error: Identifier not found "tpi"
unit1.pas(63,44) Warning: Local variable "tpiProcess" does not seem to be initialized
unit1.pas(65,60) Hint: Local variable "dwExitCode" does not seem to be initialized
unit1.pas(82) Fatal: There were 3 errors compiling module, stopping

ale toto uz nebude kniznicou...
kod vyzera takto

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ExtCtrls, shellapi, windows;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;
  tick: integer=0;
implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  timer1.enabled:=true;
  ExecAndWait('skuska.exe');
  timer1.enabled:=false;
  label1.caption:=inttostr(tick);
  tick:=0;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  inc(tick);
end;

function ExecAndWait(sExe, sCommandLine: string): Boolean;
var
  dwExitCode: DWORD;
  tpiProcess: TProcessInformation;
  tsiStartup: TStartupInfo;
begin
  Result := False;
  FillChar(tsiStartup, SizeOf(TStartupInfo), 0);
  tsiStartup.cb := SizeOf(TStartupInfo);
  if CreateProcess(PChar(sExe), PChar(sCommandLine), nil, nil, False, 0,
    nil, nil, tsiStartup, tpi) then
  begin
    if WAIT_OBJECT_0 = WaitForSingleObject(tpiProcess.hProcess, INFINITE) then
    begin
      if GetExitCodeProcess(tpiProcess.hProcess, dwExitCode) then
      begin
        if dwExitCode = 0 then
          Result := True
        else
          SetLastError(dwExitCode + $2000);
      end;
    end;
    dwExitCode := GetLastError;
    CloseHandle(tpiProcess.hProcess);
    CloseHandle(tpiProcess.hThread);
    SetLastError(dwExitCode);
  end;
end;

end.
 
Nahoru Odpovědět
29.3.2013 16:13
Avatar
Luboš Běhounek Satik:29.3.2013 16:21

Chybi ti deklarace funkce ExecAndWait nekde na zacatku, hod to treba za globalni var.

Nahoru Odpovědět
29.3.2013 16:21
https://www.facebook.com/peasantsandcastles/
Avatar
expoox
Tvůrce
Avatar
expoox:29.3.2013 16:26

funckia sa v delphi deklaruje ? do teraz som to nikdy nerobil a vzdy to islo

... nepomohlo

Editováno 29.3.2013 16:28
 
Nahoru Odpovědět
29.3.2013 16:26
Avatar
expoox
Tvůrce
Avatar
expoox:29.3.2013 16:37

toto vyzera tiez slubne ale neviem to rozbehat http://www.tek-tips.com/viewthread.cfm?…

 
Nahoru Odpovědět
29.3.2013 16:37
Avatar
expoox
Tvůrce
Avatar
expoox:29.3.2013 17:02

ok, uz netreba, zistil som ze funkcia system v C caka na koniec programu

 
Nahoru Odpovědět
29.3.2013 17:02
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 17 zpráv z 17.