ou est lerreur ?, c impossible davoir des infos dans une appli console

ou est lerreur ?, c impossible davoir des infos dans une appli console - Delphi/Pascal - Programmation

Marsh Posté le 07-10-2003 à 20:48:37    


program updater;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,IdHTTP ,classes ,forms ;
 
var
h:Tidhttp;
fdownload:Tfilestream;
begin
writeln(' mise a jour *******');
writeln('Commencer le telechargement de la mise a jour ?');
writeln('Appuyer sur Enter pour commencer !');
readln;
writeln('');
writeln('-Debut du download ...');
fdownload:=Tfilestream.Create(extractfilepath(application.exename)+'prog.tmp',fmcreate);
h.Get('*************.exe',fdownload);
writeln('-Download Termine');
 
 
writeln('');
writeln('Pret pour l''instalation de la mise jour?');
writeln('Appuyer sur Enter pour commencer !');
readln;
 
 
readln;
  { TODO -oUser -cConsole Main : placez le code ici }
 
 
ca plante au moment du h.get
le prog ce ferme
mci davance
 
 
end.

Reply

Marsh Posté le 07-10-2003 à 20:48:37   

Reply

Marsh Posté le 07-10-2003 à 21:38:37    

ça serait pas mal si tu créais ton Tidhttp, non ? (en plus tu m'as demandé par ICQ ce que tu devais mettre dans le Create :sarcastic:)
Puis tu peux tj mettre tout ton code dans un try/except, et mettre dans le except/end un :

Code :
  1. on e: Exception do
  2. begin
  3.   writeln(e.Message);
  4.   readln;
  5. end;

Au moins ça affichera l'erreur


Message édité par antp le 07-10-2003 à 21:40:14

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 08-10-2003 à 15:08:25    

lol je lavais mis puis je lai perdu car delphi a planté alors que javais pas save mes sources  
et apres jai oublie de le remettre  
mci

Reply

Marsh Posté le 08-10-2003 à 15:15:16    

jai remplace les lignes par ca :
 
try
begin
fdownload:=Tfilestream.Create(extractfilepath(application.exename)+'prog.tmp',fmcreate);
h:=h.create(nil);
h.Get('*********.exe',fdownload);
end;
except
on e: Exception do
  begin
    writeln(e.Message);
    readln;
  end;
end;
 
mais jai quand meme une exception .( mais une de celle ou on pige rien : erreur a ladresse 000021654534564...... )
 
help


Message édité par piloud le 08-10-2003 à 15:15:52
Reply

Marsh Posté le 08-10-2003 à 15:49:47    

TIdHTTP.Create ça serait mieux que h.Create, non ?

Reply

Marsh Posté le 08-10-2003 à 17:50:03    

je v me faire assassiner moi si ca conitinue LOL  
avec mes questions con ...  
faut dire que le compilateur i pourrai etre plus explicite

Reply

Marsh Posté le 08-10-2003 à 17:58:20    

C'est pas le boulot du compilateur là, c'est un crash à l'exécution parce que tu joues avec des pointeurs non initialisés... Si tu veux pas ce genre de choses faut choisir des langages qui n'utilisent pas de pointeurs :D

Reply

Marsh Posté le 08-10-2003 à 18:40:28    

et non , je changerai pas de langage pour ca , je laime bien celui la  
 
dailleur jai encore 2 kestions :
1)
ShellExecute( 0, Nil, PChar(dir+'**.exe'),Nil, Nil, SW_NORMAL );
 
la il me dit que SW_NORMAL : identifiant non declaré
(jai bien mis le shellapi dans les uses ;
 
2) comment on utilise les procedure dun Tobject dans un appli console
 
la je veux utilise le idhttpstatus  
 
 
mci d'avance  
 

Reply

Marsh Posté le 08-10-2003 à 19:41:10    

pour la 1 jai resolu :) fallait mettre  windows dans les uses  
 
parcontre le 2 tj pas !

Reply

Marsh Posté le 08-10-2003 à 19:45:31    

utiliser comment ? il est de quel type ce truc ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 08-10-2003 à 19:45:31   

Reply

Marsh Posté le 08-10-2003 à 19:50:46    

bha c comme le onclick dun bouton sauf que la c le status d'un idhttp:
 
je voudrai inclure ca :
 
procedure TForm.IdHTTP1Status(ASender: TObject; const AStatus: TIdStatus;
const AStatusText: String);
begin
writeln(astatustext);  
 
end;
 
 

Reply

Marsh Posté le 08-10-2003 à 19:52:13    

bah tu déclare un type d'objet bidon qui a cette méthode, tu crées cet objet bidon et tu raccordes sa méthodes à l'event du TIdHTTP.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 08-10-2003 à 19:56:37    

ca jai compris mais c comment le faire ke jarrive pas  , mon create je le fait dans la source ci dessus , mais ou je met mon procedure idhttp1.status(...); (entre le begin et end de lappli console ?)
 
mon create de lobjet y devrait pas etre generale (je veux dire pas uniquement pour le begin end; de lappli console?) comme il est actuellement ?
 
je pige pas comment faire :)

Reply

Marsh Posté le 08-10-2003 à 20:29:58    

Code :
  1. type
  2.   TEventManager = class(TObject)
  3.   public
  4.     procedure HTTPStatus(ASender: TObject; const AStatus: TIdStatus; const AStatusText: String);
  5.   end;
  6. var
  7.   EventManager: TEventManager;


 

Code :
  1. procedure TEventManager.HTTPStatus(ASender: TObject; const AStatus: TIdStatus; const AStatusText: String);
  2. begin
  3.   Writeln(AStatusText);
  4. end;


 

Code :
  1. begin // le begin de ton code "normal"
  2.   EventManager := TEventManager.Create;
  3.   ... // tout le code qui va jusqu'à la création du IdHTTP, y compris cette création
  4.   h.OnStatus := EventManager.HTTPStatus;
  5.   ... // tout le déroulement de ton programme
  6.   EventManager.Free;
  7. end.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 08-10-2003 à 20:30:37    

puis encore une autre ...
 
 
jai dans mes uses : forms
 
juste pour utiliser le extractfilepath(application.exename)!
le blem c kil fait a lui tout seul 200k le forms
 
alors ya til moyen davoir la dir du programme par une autre methode ?

Reply

Marsh Posté le 08-10-2003 à 20:36:23    

ParamStr(0)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 08-10-2003 à 20:51:06    

keske je ferai sans toi antp :)  
Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed