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

C# Discussion :

Problème conversion de Delphi vers language C# [Débutant]


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 101
    Points : 132
    Points
    132
    Par défaut Problème conversion de Delphi vers language C#
    Bonsoir,

    Ayant depuis un moment l'envie de tenter l'expérience du C# par curiosité et vu de ce qu'il permet d'après les forums et google,
    je me suis donc lancé.
    Mais je me retrouve confronté à une situation pour le moins embêtante à la quelle je ne parviens pas à trouver par moi-même de solution.
    Sous Delphi, c'est d'une simplicité enfantine, c'est même tiré tout droit de la faq Delphi, présente sur ce site que je consulte assez régulièrement, tout comme les forums.
    Malheureusement, je n'ai pas trouvé l'équivalent ou une altérnative dans la faq C#, ni dans le forum, ni sur google.
    Voiçi donc ce que cela donne sous delphi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TFiche_Principale.Btn_nav_liensClick(Sender: TObject);
    var i:Integer;
    begin     
       // liste les liens contenu dans le code de la page web
       // et affiche le résultat dans un memo.
       for i:=0 to Nav.OleObject.Document.links.Length-1 do
       Memo_liens.Lines.Add(Nav.OleObject.Document.Links.Item(i));
    end;
    mon problème étant de convertir cela en C#
    sachant qu'a première vue içi Nav représente en fait un WebBrowser et qu'en C#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    WebBrowser.OleObject.Document.links.Length-1
    et
    WebBrowser.(Nav.OleObject.Document.Links.Item(i)
    n'existent pas !
    dès lors par quoi sont-ils remplacés ? comment parvenir au même résultat ?
    Auriez-vous l'amabilité de m'aiguiller sur une éventuelle piste à suivre , si possible en français , je ne parle pas un mot d'anglais ça n'aide pas
    Merçi à tous
    Bonne soirée

    Cordialement
    Windows 7 / Debian 8 jessie / Kali 2 / Nas Synology ds214se / Arduino Mega 2560 / Raspberry Pi 3

  2. #2
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Bonjour ,

    Je n'y connais rien a Delphi , mais ta méthode semble être un événement click .

    En C# ce type d’événement se présente sous cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void button1_Click(object sender, System.EventArgs e)
    {
      //Les choses que tu as à faire
    }
    A l'intérieur tu semble utiliser un WebBrowser , je t'envoie alors vers de la documentation : https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx

    A bientôt !
    throw new NoSignatureException();

  3. #3
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    si tu te mets au C# (ou au .NET en général) tu vas devoir prendre l'habitude de te balader sur la MSDN

    Voici la fiche de la classe WebBrowser. Tu y vois qu'elle possède un attribut Document de type HtmlDocument, qui lui-même possède un attribut Links de type HtmlElementCollection qui doit correspondre à la collection que tu recherches et possède un attribut Count. Pour résumer le nombre que tu cherches devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int nbLinks = myWebBrowserInst.Document.Links.Count;
    Bon C#
    Plus je connais de langages, plus j'aime le C.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 101
    Points : 132
    Points
    132
    Par défaut
    Bonjour,

    Un grand merçi à vous deux pour vos réponses.

    Je marque ce sujet comme résolu, bien qu'adméttant ètre totalement perdu dans les dédales de la fiche explicative (rire)
    en effet, pas habitué et cela requiert un certain temps d'adaptation pour parvenir à comprendre.

    en tous les cas merçi pour ces pistes c'est très aimable à vous.

    Cela fait plaisir de pouvoir être guidé ainsi quand on débute.

    Cordialement
    Windows 7 / Debian 8 jessie / Kali 2 / Nas Synology ds214se / Arduino Mega 2560 / Raspberry Pi 3

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 101
    Points : 132
    Points
    132
    Par défaut
    re Bonjour,

    désolé je ré-ouvre le sujet car j'ai un peu de mal a comprendre,
    lorsque je suis le liens donné https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx
    je vais cliquer sur le lien HtmlDocument se trouvant donc dans Document https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx
    à ce stade je lis donc à côté de Links : Obtient une liste de tous les liens hypertexte dans ce document HTML.
    justement ce que je cherche à faire a priori, donc je clique sur le lien Links : https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx
    qui me donne donc le code suivant sans plus d'explication que cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public HtmlElementCollection Links { get; }


    moi je veux bien, mais comment dois-je faire pour mettre ça la dedans avec un
    richTextBox ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	private void Btn_liens_page_web_Click(object sender, System.EventArgs e)		 {
     
     
    		 }
    parce que bon moi, je me dis d'après ce que je lis, Obtient une liste de tous les liens hypertexte dans ce document HTML.
    ok, donc je met ma richTextBox et je lui passe en parametres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public HtmlElementCollection Links { get; }

    et il vas me sortir la liste des liens, que néni !
    c'est du C# et donc tu l'as dans l'os comme qui dirais, ce n'est pas la bonne manière de s'y prendre.
    alors je suis perdu
    Comment puis-je m'y prendre ?

    Merci
    Cordialement
    Windows 7 / Debian 8 jessie / Kali 2 / Nas Synology ds214se / Arduino Mega 2560 / Raspberry Pi 3

  6. #6
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Houla, je suis pas sûr de bien comprendre où tu en es dans ta démarche ...

    Alors voilà à quoi pourrait ressembler un bout de code avec :
    - webMain : mon instance de WebBrowser (qui ouvre google.fr au chargement),
    - rtfText : mon instance de RichTextBox,
    - btnDoStuff : mon instance de Button qui fait le taff :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private void btnDoStuff_Click(object sender, EventArgs e) {
    	// pour chaque lien dans la collection Links
    	foreach (HtmlElement elem in webMain.Document.Links)
    		// on concatène les valeurs des attributs href au reste de notre rtfText
    		// on ajoute un saut de ligne ("\r\n") après chaque href
    		// si cet attribut n'existe pas on écrit "noref" (grâce à l'opérateur ??)
    		rtfText.Text += elem.GetAttribute("href")??"noref" + "\r\n";
    }
    A noter qu'avant de pouvoir accéder au DOM du document web (càd l'attribut Document du WebBrowser) il faut que la page soit complétement chargée. Pour celà on se base sur l'événement DocumentCompleted du WebBrowser.
    Plus je connais de langages, plus j'aime le C.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 101
    Points : 132
    Points
    132
    Par défaut
    Bonsoir,

    Effectivement je me rend compte qu'entre le bout de code fournis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public HtmlElementCollection Links { get; }
    et sa syntaxe d'utilisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (HtmlElement elem in webMain.Document.Links)
    j'étais très loin à côté...

    Un grand merçi pour l'exemple donné en dernier post qui est pour moi beaucoup plus explicatif et plus instructif, au moins là, même étant novice c'est plus parlant,
    et ça permet d'en comprendre le fonctionnement.

    Encore merçi à tous pour l'aide et le temps que vous m'avez aimablement accordés

    Cordialement
    Windows 7 / Debian 8 jessie / Kali 2 / Nas Synology ds214se / Arduino Mega 2560 / Raspberry Pi 3

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

Discussions similaires

  1. Conversion ord() delphi vers c++
    Par Freud44 dans le forum C++
    Réponses: 4
    Dernier message: 10/02/2009, 12h22
  2. [D7][Débutant] Problème conversion String <- TEdit
    Par _alex_ dans le forum Composants VCL
    Réponses: 2
    Dernier message: 16/02/2006, 22h48
  3. Réponses: 10
    Dernier message: 31/01/2006, 17h34
  4. Problème conversion float vers double
    Par jhenaff dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 27/01/2006, 10h39
  5. [Delphi 2005] Débutant avec problème de création de fichier
    Par Patcdc dans le forum Bases de données
    Réponses: 2
    Dernier message: 06/06/2005, 18h41

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