IP Adresse auslesen und in Variablen speichern



  • Hallo.

    Schau mal in der Hilfe nach den AnsiString-Methoden Pos und SubStr

    Gruss



  • Ok krig ich irgwendwie nicht auf die reihe. dann muss ich eben auf diese funktion verzichten

    Danke nochmal für die antworten



  • Hi,

    Hab mal aus meiner Codesammlung (eigene) dies ausgegraben.

    void TForm1::ipBack(AnsiString such, //ist die Hackstring ---> "." bei dir
                        AnsiString tlr,  //das ist der IP-String mit den vielen Punkten
                        AnsiString &ers, //erster Teil
                        AnsiString &zwe, //zweiter Teil
                        AnsiString &dre, //dritter Teil
                        AnsiString &vi)  //vierter Teil
    {
     int i=tlr.Pos(such);  
     ers = tlr.SubString(1,i-1); 
     tlr = tlr.SubString(i+such.Length(), tlr.Length()-i);
    
     i=tlr.Pos(such); 
     zwe = tlr.SubString(1,i-1); 
     tlr = tlr.SubString(i+such.Length(), tlr.Length()-i);
    
     i=tlr.Pos(such); 
     dre = tlr.SubString(1,i-1); 
     tlr = tlr.SubString(i+such.Length(), tlr.Length()-i);
    
     i=tlr.Pos(such); 
     vi  = tlr.SubString(1,i-1); 
     tlr = tlr.SubString(i+such.Length(), tlr.Length()-i);
    }
    

    Das Prinzip müsste kalr sein.
    Am String vi wird er abstürzen,
    musst noch ein bisschen anpassen.

    Grüsse



  • Danke für den Code, aber ich glaube ich bin einfach zu dämlich dazu, ich krigs zwar so zum laufen, das es keine fehler gibt, aber die ausgabe funktioniert nicht, also ob ich was vergessen habe einzutragen :|

    na ja, macht nix. er kann in binärzahlen umrechen, das genügt auch schon



  • Hi,

    du musst eine Member-Funktion machen

    private:
    void ipBack(.........);
    

    Der Funktionsaufruf geht so:

    ipBack(".",
           textfeld->Text,
           Edit1->Text,
           Edit2->Text,
           Edit3->Text,
           Edit4->Text);
    

    Grüsse



  • Hi,
    der Funkionsaufruf geht so:

    AnsiString a,b,c,d;
     ipBack(".",textfeld->Text,a,b,c,d);
     Edit1->Text=a;
     Edit2->Text=b;
     Edit3->Text=c;
     Edit4->Text=d;
    

    wieso keine Ahnung

    Grüsse



  • PUUH ... Member Funktion... den begriff habe ich bis jetzt noch nie im Unterricht gehört ^^
    Diese Erklärung hier: http://www.nebel.de/kurse/C++/Member-Funktionen.html sieht eher für mich aus wie das Instanzieren von Objekten und den Methodenaufruf über dieses Objekt.

    objekt.methode(übergabeparameter);
    

    aber dann würde die Methode void ipBack nicht im private sondern im public deklarieret?!? ich hoffe ich liege da richtig, da dies hier ja auch ein ausnahmefall sein kann 🙂

    ich poste einfach mal wies bei mir jetzt ausschaut ->

    Unit1.cpp

    void __fastcall TFenster::Button5Click(TObject *Sender)
    {
    	//Aufruf der Methode ipBack
    	ipBack(".", Edit1->Text, IP1->Text, IP2->Text, IP3->Text, IP4->Text);
    }
    
    void TFenster::ipBack(AnsiString such, AnsiString tlr,  
    					AnsiString &ers, //erster Teil
    					AnsiString &zwe, //zweiter Teil
    					AnsiString &dre, //dritter Teil
    					AnsiString &vi)  //vierter Teil
    {
     int i=tlr.Pos(such);
    
     ...
    }
    

    Unit1.h

    public:	// Methoden-Deklaration
    void ipBack(AnsiString, AnsiString, AnsiString&, AnsiString&, AnsiString&, AnsiString&);
    

    (Anders gings nicht laut dem Compiler)

    Also so ist mein bisheriger wissensstand über das aufrufen von Methoden. (siehe Unit1.h)

    Nun sagt er mir aber folgendes:

    [C++ Warnung] Unit1.cpp(422): W8030 Temporäre Größe für Parameter 'ers' in Aufruf von 
    'TFenster::ipBack(AnsiString,AnsiString,AnsiString &,AnsiString &,AnsiString &,AnsiString &)' verwendet
    


  • Ah ok der Beitrag über mir hat schonmal diese Warnung geklärt 🙂

    nur sind die felder immer noch leer 😞



  • Hi,

    OHje da hab ich ja was angerichtet...... :p
    ERSTMAL bin ich absoluter SELFMADE die genauen Bezeichnungen kann ich auch nicht genau.
    Es ist auf jeden alles C++ .....

    private:
    //in die Haderdatei der Form1 --> unit.h datei
    //nichts weglassen
    void ipBack(AnsiString such, 
                AnsiString tlr,  
                AnsiString &ers, //erster Teil
                AnsiString &zwe, //zweiter Teil
                AnsiString &dre, //dritter Teil
                AnsiString &vi   //vierter Teil
                );
    //alles ganz geanu anschauen das ';' hintendrann
    //Es fehlt auch --->TFenster::
    //so wird Member-function deklarieren (es ist deine eigene)
    //übrigens::::: Methode und Funktion ist das dupfengleiche
    
    void __fastcall TFenster::Button5Click(TObject *Sender)
    
    {
        //Aufruf der Methode ipBack
        AnsiString a,b,c,d;
        ipBack(".",Edit1->Text,a,b,c,d); 
        IP1->Text=a; 
        IP2->Text=b;        
        IP3->Text=c; 
        IP4->Text=d;
    }	
    
    void TFenster::ipBack(AnsiString such, AnsiString tlr,  
                        AnsiString &ers, //erster Teil
                        AnsiString &zwe, //zweiter Teil
                        AnsiString &dre, //dritter Teil
                        AnsiString &vi)  //vierter Teil
    {
     int i=tlr.Pos(such);
    
     ...
    }
    

    Hei du solltest jetzt selber hinbekommen willst ja was lernen oder 😕
    Naja kannst aber trotzdem Fragen.
    Probieren geht manchmal mehr als studieren....... 🕶

    Grüsse

    PS: du kannst ein Wort klicken (Quelltext) und F1 drücken für Hilfe.... 👍



  • Ok jetzt tut sich was (du hast nix schlimmes angerichtet, ich glaube wir meinen meist das selbe, drücken uns aber unterschiedlich aus) :p

    Und zwar ist jetzt folgendes passiert:
    ich habe in mein TEdit-Feld: "Edit1" was reingeschrieben -> 123.123.443.221.
    soweit so gut zeigt er mir dann alle zahlen in den entsprechenden felder an.
    so soll des auch sein ^^ jetzt probiere ich noch, deinen code mit dem tip von akari zu "fusionieren" ^^, damit es automatisch passiert.

    ich meld mich in ca. 10 min nochmal und berichte



  • ES FUNKTIONIERT,

    ihr seid meine Helden :D:D:D

    nun will ich auch posten wie ich des nun gemacht habe!

    Das Herzstück - die Umwandlung ^^

    void __fastcall TFenster::Button5Click(TObject *Sender)
    {
    	//system("Hilfe.pdf");
    
    	//Aufruf der Methode ipBack
    	AnsiString a,b,c,d;
    	Edit1->Text = ListBox1->Items->Strings[0] + "."; // <- Darauf muss man erstmal kommen... Der Punkt ^^
    	ipBack(".",Edit1->Text,a,b,c,d);
    	IP1->Text=a;
    	IP2->Text=b;
    	IP3->Text=c;
    	IP4->Text=d;
    }
    

    Ich danke euch vielmals für die schnelle und nette hilfe.

    Bis dann 🙂
    Zack



  • Hi,

    schau dir mal nochmal den Beitrag von mir an wo ich
    ipBack reingestellt hab, was steht da unten dran?????

    Geanau.....

    Den Punkt musst du nicht dazu machen wenn du jetzt noch den Fehler in
    ipBack findest.... (optimierst)

    Grüsse



  • Aus meiner Handlungsweise hast du sicherlich erkannt, das ich es nicht optimiert habe sondern es erstmal überhaupt zum funktionieren gebracht haben wollte ^^

    Ich bastel daran noch etwas rum und guck, ob ich diese optimirung hinkrige 🙂
    wenn nicht, auch nicht schlimm gehen tuts ja dennoch

    Bis dann
    Zack



  • Hi,

    es geht mir nur darum, dass du etwas daraus lernst, sonst hat
    es keinen Sinn.

    Wenn man immer nur vorgesetzten Code benutzt,
    kannst du niemals selbständig was machen.
    Wenn das nur ein Projekt für die Schule ist und es dich eh
    nicht richtig interessiert ist es auch ok so 😉

    Hab gerade hier was in der FAQ gefunden.

    Hat auch was mit IP zu tun.
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39181.html

    Grüsse 👍



  • Das ich daraus was lerne ist auch gerne erwünscht, den es ist ein Freizeitprojekt gewesen ^^

    aber ich bin der meinung, das ich mir damit etwas zu viel zugemutet habe und es erstmal dabei belassen sollte, das es geht. ich mach dann lieber vorerst kleinere, einfachere sachen, um in die thematik besser einsteigen und verstehen zu können. und mein buch (C++ Kompendium) hab ich auch noch net durch ^^ aber mein IPRechner hatte vor dem IP auslesen schon ein paar nette gimmicks:
    -> Binärzahl ausrechen
    -> Netzmaske ermitteln
    -> Netzadresse ermittel
    -> Broadcast ermitteln

    für nen Rookie schon ganz ordentlich wie ich finde ^^


Anmelden zum Antworten