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 :

[XE8] TWebBrowser , fuite de mémoire ? [Windows]


Sujet :

Composants FMX Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut [XE8] TWebBrowser , fuite de mémoire ?
    Bonjour,

    après avoir tenté d'utiliser TMapview (en vain) :
    - je n'arrive pas à comprendre si ce n'est que pour les mobiles ou pas
    - je ne sais pas comment faire quant on n'a ni latitude ni longitude

    je me suis tourné vers un TWebBrowser en chargeant des pages 'types' pour les différents moteurs google,bing,openStreet,yahoo

    mon test affiche parfaitement la position que je cherche mais en fermant l'application j'ai des fuites de mémoires !
    même un simple test avec page blanche (about:blank), ou aucune connexion me provoque la fuite !

    ---------------------------
    Unexpected Memory Leak
    ---------------------------
    An unexpected memory leak has occurred. The unexpected small block leaks are:


    13 - 20 bytes: TEventDispatch x 1
    21 - 28 bytes: TDelegatedOleControl.Create$94$ActRec x 1
    29 - 36 bytes: TControlSize x 1
    37 - 44 bytes: TPosition x 4
    45 - 52 bytes: TBounds x 3
    477 - 524 bytes: TOleWebBrowser x 1
    877 - 956 bytes: TWindowsWebBrowserService x 1
    comme c'était une fiche d'une application , j'ai fait un test au plus simple (une forme, un webbrowser, aucune action) résultat même fuites !
    comment y pourvoir ?
    nb. il semblerai que ce bug soit corrigé dans la prochaine version mais en attendant ????
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  2. #2
    Membre émérite
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Points : 2 529
    Points
    2 529
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    après avoir tenté d'utiliser TMapview (en vain) :
    - je n'arrive pas à comprendre si ce n'est que pour les mobiles ou pas
    Bonjour,

    Je confirme que le composant MapView est dédié aux applications mobiles.

  3. #3
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Quand on n'a pas les coordonnées, il faut les demander à part, je pense : http://www.itouchmap.com/latlong.html par exemple, à partir d'une adresse, mais sûrement aussi dans l'API Google Maps.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Thierry Laborde Voir le message
    Bonjour,

    Je confirme que le composant MapView est dédié aux applications mobiles.
    je m'en doutais un peu , dommage ...

    voici comment je m'en suis sorti avec Google* (je me demande si cela fonctionnerai sur mobile aussi bien )
    (* je pense qu'il y a encore un peu de déchet dans le HTML)

    j'espère pouvoir en faire autant avec BingMaps et OpenStreet (pour l'instant il me faut une position connue pour ces deux derniers)
    et si j'arrivais à obtenir l'itinéraire en prime ce serait le top Défi aux fortiches du HTML ....
    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
     
    const
    GoogleMapsPage: String =
    '<html> '+
    '<head> '+
    '<meta name="viewport" content="initial-scale=1.0, user-scalable=yes" /> '+
    '<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script> '+
    '<script type="text/javascript"> '+
    '  var map;'+
    '  function initialize() { '+
    // partie pour se positionner en fonction d'une adresse
    '    geocoder = new google.maps.Geocoder();'+
    '    geocoder.geocode( { ''address'': [Adresse]}, function(results, status) {'+
    '        map.setCenter(results[0].geometry.location);'+
    '        var marker = new google.maps.Marker({map: map,position: results[0].geometry.location});'+
    '        });'+
    // partie pour mettre un marqueur en fonction d'une latitude longitude récupérée
    '    var latlng = new google.maps.LatLng([Lat],[Lng]); '+
    '    var myOptions = { '+
    '      zoom: 12, '+
    '      center: latlng, '+
    '      mapTypeId: google.maps.MapTypeId.[Type] '+
    '    }; '+
    // affichage de la map 
    '    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); '+
    '    var marker = new google.maps.Marker({'+
    '      position: latlng, '+
    '      title: "[Title]", '+
    '      map: map '+
    '  });'+
    '  } '+
    ''+'</script> '+
    '</head> '+
    '<body onload="initialize()"> '+
    '  <div id="map_canvas" style="width:100%; height:100%"></div> '+
    '</body>'+
    '</html>';
    .....
    // Utilisation 
    procedure TFormCarte.Button1Click(Sender: TObject);
    var MapStr : String;
        function ReplaceTag(const PageStr,Tag,NewValue:string):String;
        begin
           Result:=StringReplace(PageStr,Tag,NewValue,[rfReplaceAll]);
        end;
    begin
      MapStr:=OpenStreetMapsPage;
      MapStr:=ReplaceTag(MapStr,'[Adresse]',QuotedStr('14 rue du moulinier 44115 HAUTE GOULAINE')); // test par adresse
      // test position connue  
      MapStr:=ReplaceTag(MapStr,'[Lat]','45.8518378');
      MapStr:=ReplaceTag(MapStr,'[Lng]','1.1587193');
      MapStr:=ReplaceTag(MapStr,'[Title]','Danse Azur SARL');    
      MapStr:=ReplaceTag(MapStr,'[Type]','HYBRID');
      WebBrowser1.LoadFromStrings(MapStr,'');
    end;

    reste que j'ai toujours ma fuite de mémoire !
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    pour la fuite mémoire, il s'agissait d'un bug répertorié et corrigé avec la version Delphi 10 (que j'ai récupéré et installé après quelques déboires avec ma boite mail <= ça c'est au cas où Thierry Laborde reviendrait faire un tour sur ce post )

    @tourlourou le bout de code que j'ai posté permet d'obtenir longitude et latitude (lignes 17 à 21) et ce sans même de clé pour l'API
    le weekend prochain je pense tester pour bingmap (là il faut une clé, c'est la constatation de ce dernier samedi
    j'aimerai aussi intégré la possibilité de OpenStreet mais, comme tout ce qui est plus libre de droits c'est aussi beaucoup plus complexe (affaires à suivre)
    et cerises sur le gâteau si j'arrive à inclure le calcul d'itinéraire et la localisation de la machine (les mobiles ont la fonction géolocalisation mais pas forcément les PC et les résultats proposé par windows 10 quand on partage sa localisation sont plus qu’approximatifs lors de mes test : au bas mot un rayon de 100 km !)

    en tout cas mon problème principale (fuite de mémoire) est résolu en changeant de version, je ne crois pas hélas qu'il y ait un patch pour la version XE8 à ce sujet, sauf à aller fouiller dans les sources .....
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

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

Discussions similaires

  1. fuite de mémoire ?
    Par salseropom dans le forum C
    Réponses: 2
    Dernier message: 12/01/2006, 16h19
  2. Réponses: 1
    Dernier message: 02/12/2005, 14h18
  3. fuite de mémoire
    Par mamag dans le forum MFC
    Réponses: 17
    Dernier message: 19/08/2005, 10h42
  4. Fuite de mémoire en utilisant le template list
    Par schtroumpf_farceur dans le forum Langage
    Réponses: 9
    Dernier message: 18/07/2005, 20h44
  5. Réponses: 8
    Dernier message: 17/10/2002, 12h52

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