Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno [Delphi] Program neběží korektně mimo IDE

Ahojte. Mám následující program (klidně ho sem plácnu celý, je to maličká utilitka):

program runreport;

{$APPTYPE CONSOLE}

uses
  SysUtils, MConnect, ComObj, ActiveX;

var RepParam:String;
var dcom1: TDCOMConnection;

procedure VypisHelp();
begin
WriteLn ('Spouští report na vzdáleném serveru.');
WriteLn('');
WriteLn('runreport [/report] [název reportu]');
WriteLn('');
WriteLn('/report název reportu: spustí report "název reportu."');
WriteLn('/?: zobrazí tuto nápovedu');
end;

procedure CheckParam();
begin
if ParamStr(2)='' then WriteLn('Parametr je prázdný!')
        else try
        RepParam:=ParamStr(2);
        CoInitialize(nil);
        dcom1:=TDCOMConnection.Create(nil);
        dcom1.ComputerName:='SRV02';
        dcom1.LoginPrompt:=False;
        dcom1.ServerGUID:='{57131FF5-58C4-4F1C-BDEF-F45A71C369A1}';
        dcom1.ServerName:='MailResServer.clMailRes';
        dcom1.Connected:=True;
        dcom1.AppServer.GenReport(RepParam);
        CoUninitialize;
        WriteLn('Odesláno na server s parametrem' + ' ' + RepParam);
        except
        WriteLn ('Neco se posralo');
        exit;
        end;
end;

begin
if ParamStr(1) = '/?' then VypisHelp()
        else if ParamStr(1)= '/report' then CheckParam()
                else WriteLn ('Zadán nesprávný nebo prázdný parametr.');
end.

V IDE má nastavené parametry /report PARAMETR. Mačkám-li Shift-F7 a procházím-li skrz kód, program udělá co má a Delphi proti němu naprosto neprotestují.

Leč spuštěný z komandlajny (Windows 2003 Server, je to to samé PC) tento kód mezi try..except se neprovede (jak jsem zjistil zakomentováváním):

        dcom1.Connected:=True;
        dcom1.AppServer.GenReport(RepParam);

Prostě to nic neudělá. A teď babo raď :-/ Doteď jsem byl zvyklý, že moje chyby najde debugger, ale v tomhle případě vážně nevím, jak dál... "Programátor" jsem jen sváteční, takže čekám nějaké rozuzlení (nejen) od místních delphi gurus, JF a Rce ;-)

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Neudělá to lautr nic, ani to nevypíše ten "WriteLn('Odesláno na server s parametrem' + ' ' + RepPara…
Rce 28.08.2006 01:27
Rce
Vypíše to "něco se posralo", protože to připojení dcom klienta, tedy dcom1.Connected:=True; se nep…
Vladimir 28.08.2006 01:40
Vladimir
No, neviem google o tej komponente najde len same blbosti, ale nemal by si pouzit dcom1.Open() ? a p…
MM.. 28.08.2006 02:09
MM..
dcom1.Open() a dcom1.Connected:=True by mělo (možná :-)) být rovnocenné. Connected by se testovat ro… poslední
Rce 28.08.2006 02:16
Rce

Vypíše to "něco se posralo", protože to připojení dcom klienta, tedy

dcom1.Connected:=True;

se neprovede (a logicky pak to následující volání rozhraní serveru).

Odesláno atd. to vypíše pouze, když ty dva zmíněné řádky zakomentuju, takže to má šanci doběhnout až tam.

Nejvíc mě vytáčí že v IDE to funguje ]:(

No, neviem google o tej komponente najde len same blbosti, ale nemal by si pouzit dcom1.Open() ? a prip. potom testovat to "Connected"? (skus googlit najdes nejake diskusie o tom, alebo mas k tomu TDCOMConnection nejaky reference manual?).

Je mozne ze delphi ako aplikacia to uz ma otvorene alebo co, a ty nieco nerobis co uz urobilo delphi pre seba ako aplikaciu...

Alebo moze byt rozdiel medzi debug verziou a release verziou, skus vytvorit a spustit debug verziu (nastavenia projektu resp. linkera).

P.S. alebo to co pise Rce vyssie, skus to v debuggeri nekrokovat ale pustit to "go to cursor" alebo si nastav breakpointy a spust v delphi debbugeri go (po breakpoint), ci to vyleti do toho except ak to spustis rychlo...

dcom1.Open() a dcom1.Connected:=True by mělo (možná :-)) být rovnocenné. Connected by se testovat rozhodně mělo. TDCOMConnection realizuje jen spojení, problém bude v tom Serveru. Mám pocit, že se má zadávat buď GUI a nebo ServerName - ale nadbytečné zadání (v tomto případě) GUI asi na závadu nebude. Nejlépe je vyhodit ten try--except a uvidíme, co to hlásí za chybu.

//Edit: éééch, mezitím vyřešeno (patrně tou chybovou hláškou :))). Tak hlavně, že to chodí. Dobrou noc, Vladimíre :beer::beer::beer:

Zpět do poradny Odpovědět na původní otázku Nahoru