Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1068 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  [DELPHI] Créer une fenêtre de LOG ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[DELPHI] Créer une fenêtre de LOG ?

n°2095569
davidmarli
Posté le 17-08-2011 à 08:09:15  profilanswer
 

Bonjour,
 
j'ai un soft qui affiche une fenêtre de LOG pdt un long traitement (c'est juste une fiche dans laquelle se trouve un memo, j'ajoute une ligne au memo contenant la commande passée, puis j'éxécute la commande).
Le problème c'est que cette commande est longue à traiter (5 à 15 minutes).
Pdt ce temps, le memo de la fenêtre n'est pas accessible (je ne peux pas copie rle texte par exemple avec un clic droit).
 
J'ai donc regardé du côté des threads, mais franchement je n'y comprends rien.
 
Quelqu'un peut-il m'expliquer exactement comment faire ?
Peut-être puis-je me passer des threads ?
 
En tout cas voilà ce que j'ai fait !
 

Citation :

unit UnitThreadLOG;
 
interface
 
uses
  Classes,sysutils,unitlog;
 
type
  LOG_Thread = class(TThread)
  private
    { Déclarations privées }
    FFormLOG:TFormLOG;
  protected
    procedure Execute; override;
    procedure OnTerminateProcedure(Sender: TObject);
  public
  constructor Create(Suspended : Boolean;s:string);
  end;
 
 
implementation
 
constructor LOG_THREAD.Create(Suspended: Boolean;s:string);
begin
FreeOnTerminate := True;
inherited Create(Suspended);
Formlog := TFormLog.Create(nil);
FormLOG.Show;
formlog.memo1.Lines.Add(s);
OnTerminate := OnTerminateProcedure;
end;
{ LOG_Thread }
 procedure LOG_THREAD.OnTerminateProcedure(Sender: TObject);
begin
//if Assigned(FORMLOG) then
//FormLOG.Release;
end;
procedure LOG_Thread.Execute;
begin
  { Placez le code du thread ici }
// if Assigned(FormLOG) then
end;
 
end.


 
 
et dans mon prog :  
 

Citation :

Procedure TFormProgress.WTVtoTS(nfs, repdest, nomfic: string);
var commande, s1: string;
  sizewtv, sizeTS: Int64;
  doscommand1: tdoscommand;
  i, longext: integer;
  f: textfile;
 
  var
MyThread_2 : LOG_THREAD;
begin
  commande := '"' + javapath + '" -cp "' + cheminappli +
    'logiciels\remuxtool_1.2.4\remuxtool.jar" util.WtvToMpeg -i "' + nfs +
    '" -o "' + repdest + nomfic + '.ts" -all';
     
  MyThread_2:=LOG_THREAD.Create(false,commande);
 
.....


 
Je vois bien la fenêtre apparaître, mais pas le texte !!!!
 
Merci pour votre aide.

mood
Publicité
Posté le 17-08-2011 à 08:09:15  profilanswer
 

n°2095571
rufo
Pas me confondre avec Lycos!
Posté le 17-08-2011 à 08:54:47  profilanswer
 

dans le thread, faut mettre une instruction relative au thread qui "ralentit" ce dernier le temps de permettre au cpu de faire traiter un bout des autres processus en cours. Mais je ne me rappelle plus la commande. Je crois qu'elle finit par "process"...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2095578
davidmarli
Posté le 17-08-2011 à 09:50:22  profilanswer
 

application.processmessages ???

n°2095579
rufo
Pas me confondre avec Lycos!
Posté le 17-08-2011 à 09:56:39  profilanswer
 

oui, c'est ça


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2095592
davidmarli
Posté le 17-08-2011 à 10:34:03  profilanswer
 

ok, mais concrétement je le mets où le application.processmessages ? dans le execute ?

n°2095608
rufo
Pas me confondre avec Lycos!
Posté le 17-08-2011 à 11:22:39  profilanswer
 

dans le thread qui consomme tout le CPU, c'est-à-dire WTVtoTS.
 
Je vois que tu lances dans ce thread une ligne de commande. Regardes si y'a pas des options à ce sujet...


Message édité par rufo le 17-08-2011 à 11:24:19

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2097435
delphi_95
Dev Delphi
Posté le 25-08-2011 à 10:45:31  profilanswer
 

Une méthode simple
 
Utiliser Gexpert pour Delphi (addon très pratique et gratuit)
 
Utiliser l'unité  DbugIntf, elle gère une fenêtre complètement indépendante de log
 
Utiliser la procédure SendDebug.
 
L'unité contient d'autres procédures pour logger


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  [DELPHI] Créer une fenêtre de LOG ?

 

Sujets relatifs
VBA - Gestion de la fenêtre windows "Téléchargement de fichier"un fichier PDF qui s'ouvrirait dans une nouvelle fenêtre (pop up)
Logiciel pour créer des formulaires ?Créer un site comme wloche.tk et zloche.net
[delphi] QuickReport et les Fichiers PDFQuestion pour un portage Win -> OSX
[zend] Créer proprieter dans config du site[EXCEL/VBA] Masquer fenêtre DOS
Créer une base utilisable avec une interface conviviale : quels outilsVBA, creer et ecrire un fichier text (.txt) depuis un macro
Plus de sujets relatifs à : [DELPHI] Créer une fenêtre de LOG ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR