IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

Thread FMX Android plante


Sujet :

Composants FMX Delphi

  1. #1
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut Thread FMX Android plante
    Bonjour,

    Je souhaite utilisé un thread pour télécharger des données sur une page internet (qui me renvoi du XML) et l'insérer dans ma bdd embarqué.

    Tout d'abord j'ai mis en place ce thread sur FireMonkey (normal), et je n'ai pas de soucis. Execution du thread, téléchargement des données, analyse : ok.

    Sur FireMonkey Mobile c'est un peux plus compliqué.. mon application plante "app_name a cesser de fonctionner". Du coup j'ai épuré le code au maximum au point ou je n'ai plus que des showmessage et pourtant le thread plante encore...

    Voici le code que j'ai pour lancer l’exécution du thread (dans le OnCreate de ma fiche principal)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TfAccueil.FormCreate(Sender: TObject);
    var
      UnThread: TUnThread;
    begin
      try
        UnThread := TUnThread.Create;
        UnThread.FreeOnTerminate := True;
        UnThread.Resume;
     Except
        on E : Exception do
          ShowMessage(E.Message);
      End;
    end;
    Mon type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      TUnThread = class(TThread)
      private
        FiTraitement: integer;
        FiMax: integer;
      protected
        procedure Execute; override;
        procedure UpdateCompteur;
        function GetValueNode(XMLNode: IXMLNode; sNode: string): string;
      end;
    Le code de mon thread (qui fonctionnais sur Firemonkey)..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    procedure TUnThread.Execute;
    var
      ns: TNetworkState;
      rs: TFileStream;
      id: TIdHTTP;
      ch: string;
      f: TFile;
      xml : TXMLDocument;
      i, t: integer;
    begin
      FiTraitement := 0;
      FiMax := 0;
     
      try
        ns := TNetworkState.Create;
     
        // récupération du fichier XML
        if ns.IsConnected then
        begin
          try
            id := fAccueil.IdHTTP;
            id.Disconnect;
            ch := TPath.GetDocumentsPath + PathDelim + 'commentaire.xml';
            rs := TFileStream.Create(ch, fmCreate);
            id.Get('http://monsite.fr', rs);
          finally
            FreeAndNil(rs);
          end;
        end;
     
        // exploitation des données XML
        if FileExists(ch) then
        begin
          try
            if not Assigned(xml) then
              xml := TXMLDocument.Create(fAccueil);
     
            xml.LoadFromFile(ch);
     
            t := xml.ChildNodes.Nodes['main'].ChildNodes.Count;
            fAccueil.ProgressBar1.Max := t;
     
            for i := 0 to t - 1 do
            begin
              if i = 0 then
              begin
                fAccueil.qrySelect.SQL.Clear;
                fAccueil.qrySelect.SQL.Append('insert into commentaire (id_commentaire, msg_commentaire, note_commentaire,');
                fAccueil.qrySelect.SQL.Append('date_commentaire, id_utilisateur, nom_utilisateur, id_whisky)');
                fAccueil.qrySelect.SQL.Append('VALUES (:id, :msg, :note, :date, :id_user, :nom_user, :whisky)');
              end;
     
              fAccueil.qrySelect.Params.ParamByName('id').AsString := GetValueNode(xml.ChildNodes.Nodes['main'].ChildNodes[i], 'id');
     
              if fAccueil.qrySelect.Params.ParamByName('id').AsString <> '' then
              begin
                fAccueil.qrySelect.Params.ParamByName('msg').AsString := GetValueNode(xml.ChildNodes.Nodes['main'].ChildNodes[i], 'message');
                fAccueil.qrySelect.Params.ParamByName('note').AsString := GetValueNode(xml.ChildNodes.Nodes['main'].ChildNodes[i], 'note');
                fAccueil.qrySelect.Params.ParamByName('date').AsString := GetValueNode(xml.ChildNodes.Nodes['main'].ChildNodes[i], 'date');
                fAccueil.qrySelect.Params.ParamByName('id_user').AsString := GetValueNode(xml.ChildNodes.Nodes['main'].ChildNodes[i], 'user');
                fAccueil.qrySelect.Params.ParamByName('nom_user').AsString := GetValueNode(xml.ChildNodes.Nodes['main'].ChildNodes[i], 'nom');
                fAccueil.qrySelect.Params.ParamByName('whisky').AsString := GetValueNode(xml.ChildNodes.Nodes['main'].ChildNodes[i], 'whisky'); 
                fAccueil.qrySelect.ExecSQL();
     
                Inc(FiTraitement);
                Synchronize(UpdateCompteur);
              end;
            end;
          finally
            FreeAndNil(xml);
            DeleteFile(ch)
          end;
        end;
      finally
    	FreeAndNil(ns);
      end;
    end;
     
    function TUnThread.GetValueNode(XMLNode: IXMLNode; sNode: string): string;
    begin
       Result := '';
     
       if not VarIsNull(XMLNode.ChildValues[sNode]) then
          Result := XMLNode.ChildValues[sNode];
    end;
     
    procedure TUnThread.UpdateCompteur;
    begin
      fAccueil.ProgressBar1.Value := FiTraitement;
    end;
    Je n'arrive pas à voir ou mon code plante car pas de débogage pas à pas ..

    Même en enlevant tous ce que j'ai dans le "Execute" de mon thread, ca plante encore ..

    Je modifie le "Execute" pour avoir juste un showmessage dedans. Dans le OnCreate je met:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    procedure TfAccueil.FormCreate(Sender: TObject);
    var
      UnThread: TUnThread;
    begin
      try
        UnThread := TUnThread.Create;
        showmessage('msg1');
        UnThread.FreeOnTerminate := True;
        showmessage('msg2');
        UnThread.Resume;
     Except
        on E : Exception do
          ShowMessage(E.Message);
      End;
    end;
    Je vois le message "msg2" et l'appli plante.

    Sur FireMonkey j'ai du ajouter le uses "ActiveX" et :
    - au début : CoInitialize(nil);
    - a la fin : CoUnInitialize(nil);

    Sur mobile ce uses n'existe pas..

    Peut-être que vous aller voir quelque chose qui cloche ?

    Merci

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    ActiveX,CoInitialize,CoUnInitialize sont spécifiques à Windows, donc ne marcheront pas en mobile. Quel parser utilises-tu?

    Il faudrait essayer en utilisant un TXMLDocument (Xml.XMLDoc) avec DOMVendor := ADOM XML v4 par exemple

    (Ce ne sont que des pistes, je n'ai plus de Delphi fonctionnel avant la semaine prochaine.)
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  3. #3
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    Merci pour ta réponse.
    Mon code fonctionne parfaitement sur la ma TForm (fAccueil).
    Du moment que je le lance via un TThread cela ne marche plus

  4. #4
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    J'ai relu ton post (un peu plus attentivement) et je ne vois pas de solution.

    Sous Windows le CoInitialize est normal pour un thread, il faudrait arriver à trouver les initialisations nécessaires au xml dans un thread.

    En utilisant le parser ADOM, le résultat est le même (il est censé être indépendant de la plateforme)?
    http://docwiki.embarcadero.com/CodeE...endor_(Delphi)
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  5. #5
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Merci je vais tester

    En revanche, comment expliquer que mon appli crash même quand mon "Execute" ne contient aucune ligne de code ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 393
    Points : 637
    Points
    637
    Par défaut
    sous android et ios delphi utilise un nouveau système de mémoire (ARC Automatic Reference Counting)

    vérifie si ton UnThread n'est pas libéré automatiquement dès la sortie de FormCreate, déclare la variable comme une propriété de la fiche et fais un test...

  7. #7
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Je viens de tester et pas mieux en déclarant ma variable comme propriété de la fiche

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 393
    Points : 637
    Points
    637
    Par défaut
    supprime resume qui est deprecated et remplace le par start

  9. #9
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Pas mieux

  10. #10
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Voici des nouvelles..

    J'ai ajouter le
    Avant le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UnThread.FreeOnTerminate := True;
    Et ce la fonctionne.. du coup je remet mon code petit à petit dans le "Execute" de mon thread.

    J'ai un problème sur le TIdHTTP, il n'en veux pas.
    J'ai surchargé le Create pour passé le TIdHTTP de ma TForm
    mais l'application crash toujours.

    J'ai déclaré un TIdHTTP en private sur mon thread et je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FIdHTTP := TIdHTTP.Create(nil);
    J'ai aussi essayé avec une procedure appelé avec Synchronize (et une property sur ma TForm)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FIdHTTP := fAcceuil.pubIdHTTP;
    Avez-vous une idée pour que je puisse utiliser un TIdHTTP dans mon thread ?

    Merci

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 393
    Points : 637
    Points
    637
    Par défaut
    cela veut dire quoi il n'en veut pas ?

    par expérience je peux confirmer que les thread avec idHttp fonctionnent sous android.


    modifie ton TUnThread comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    constructor TUnThread.Create(ACreateSuspended: Boolean)
    begin
     
      FreeOnTerminate := true;
     
       idHttp := TIdHTTP.create(nil);
     
      inherited Create(ACreateSuspended);
    end;
     
    destructor TUnThread.Destroy;
    begin
     
       idHttp.free;
     
      inherited Destroy;
    end;
    et tu le lances comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UnThread := TUnThread.Create(false);
    tu peux aussi envisager de modifier le create de TUnThread pour lui passer divers paramètres

    évites aussi de manipuler les composants de ta fiche depuis ton thread, envoi plutôt des messages

  12. #12
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par exoseven Voir le message
    cela veut dire quoi il n'en veut pas ?

    par expérience je peux confirmer que les thread avec idHttp fonctionnent sous android.


    modifie ton TUnThread comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    constructor TUnThread.Create(ACreateSuspended: Boolean)
    begin
     
      FreeOnTerminate := true;
     
       idHttp := TIdHTTP.create(nil);
     
      inherited Create(ACreateSuspended);
    end;
     
    destructor TUnThread.Destroy;
    begin
     
       idHttp.free;
     
      inherited Destroy;
    end;
    et tu le lances comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UnThread := TUnThread.Create(false);
    tu peux aussi envisager de modifier le create de TUnThread pour lui passer divers paramètres

    évites aussi de manipuler les composants de ta fiche depuis ton thread, envoi plutôt des messages
    Merci je vais tester à midi.
    J'avais modifier le Create de mon TUnThread pour lui passer un TIdHTTP que j'affecte à mon TIdHTTP de on thread (propriété private). Ensuite je fais un FIdHTTP.Get(... et mon application crash. "xx a cessé de fonctionner.." le problème c'est que j'ai aucun message comme peux me donner un try except..

    Je test a midi et je reviens vers vous.

  13. #13
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    logcat devrait te donner des infos sur le problème

    il n'est pas intégré à XE5 pour autant que je sache, mais tu peux l'avoir sous Eclipse ou même en ligne de commande il me semble avec "adb logcat"
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  14. #14
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Merci je vais regarder avec logcat.

    @exoseven
    J'ai fais ce que tu m'a indiqué mais pas mieux
    Voici le code complet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    unit thread;
     
    interface
     
    uses
      System.Classes, Xml.XMLIntf, System.Variants, FMX.Dialogs, IdHTTP, NetworkState;
     
    type
      TUnThread = class(TThread)
      private
        FsMessage: string;
        FIdHTTP: TIdHTTP;
      protected
        procedure Execute; override;
        procedure UpdateMessage;
      public
        constructor Create(ACreateSuspended: Boolean); overload;
        destructor Destroy;
      end;
     
    implementation
     
    uses
      SysUtils, System.iOUtils,  XMLDoc, accueil;
     
    { TUnThread }
     
    constructor TUnThread.Create(ACreateSuspended: Boolean);
    begin
      FreeOnTerminate := true;
      FidHttp := TIdHTTP.create(nil);
     
      inherited Create(ACreateSuspended);
    end;
     
    destructor TUnThread.Destroy;
    begin
      FIdHTTP.Free;
      inherited Destroy;
    end;
     
    procedure TUnThread.Execute;
    var
      rs: TFileStream;
      ch: string;
    begin
      try
        FsMessage := 'Récupération des données';
        Synchronize(UpdateMessage);
    	// ok jusqu'ici ..
        begin
            ch := TPath.GetDocumentsPath + PathDelim + 'commentaire.xml';
            rs := TFileStream.Create(ch, fmCreate);
            FidHTTP := TIdHTTP.Create(nil);
            FidHTTP.Get('http://xx.fr/whisky.php?comment&whisky=0&nb=0', rs);
        end;
      finally
    	  //
      end;
    end;
     
    procedure TUnThread.UpdateMessage;
    begin
      fAccueil.txtDownload.Text := FsMessage;
    end;
     
    end.
    Je vais devenir fou
    Tu aurais encore ton projet ? ou un exemple en zip avec un thread (avec idhttp) sur un projet android ?

    Merci

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 393
    Points : 637
    Points
    637
    Par défaut
    mon projet n'est pas gratuit

    il est inutile de recréer idHttp dans le execute car tu l'as déjà fait dans le create (c'est pas ça qui plante mais bon...)

    comme tu travailles sous android vérifie que tu as bien les droits pour ton fichier commentaire.xml

    pour être sur de ce qui plante supprime le code de ce fichier et teste déjà si tu peux télécharger avec idhttp

  16. #16
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Ah

    Le code de récupération du fichier xml, enregistrement et traitement fonction quand le code est sur ma TForm, du coup ça écarte la question des droits (que je m'étais posé)

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 393
    Points : 637
    Points
    637
    Par défaut
    je sais plus trop quoi te dire... , peut-être essaye de lancer ton thread ailleurs que dans le create de ta forme.

  18. #18
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    J'ai enfin réussi a faire fonctionner mon thread

    Du coup j'ai passé mon Thread du OnCreate au OnShow.
    J'ai ajouté un TIdHTTP et un SQLQuery en property

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if not Assigned(UnThread) then
       UnThread := TUnThread.Create;
    UnThread.yIdHTTP := IdHTTP;
    UnThread.yqryThread := qrySelect;
     
    UnThread.Start;
    J'ai du réécrire entièrement le thread, compiler et tester à chaque nouvelle ligne

    J'ai remarqué que cette ligne posais aussi problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TPath.GetDocumentsPath + PathDelim + 'download.xml';
    Du coup j'ai ajouté une autre property (sChemin: string) que j'affecte avant le Start du thread.

    En tous cas merci beaucoup pour vos réponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/10/2014, 08h41
  2. Réponses: 0
    Dernier message: 11/01/2014, 02h16
  3. Réponses: 4
    Dernier message: 04/07/2011, 16h50
  4. Code Client/serveur avec thread sur Android
    Par Narcistou dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 21/04/2011, 11h25
  5. Gestion des thread sous Android
    Par bind ways dans le forum Android
    Réponses: 4
    Dernier message: 08/04/2011, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo