Anonymní profil Tomáš – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Tomáš – Programujte.comAnonymní profil Tomáš – Programujte.com

 

Příspěvky odeslané z IP adresy 109.71.213.–

Tomáš
C / C++ › Borland C++
24. 5. 2016   #210899

#2 hlucheucho
Form sám o sobě nechci minimalizovaný, vždy když proběhne system ping, tak vyskočí na vteřinku cmd konzole a tuhle chci, aby nebyla vidět... Je to potom tak akorát dělané pro epileptiky :D 

Tomáš
C / C++ › Borland C++
24. 5. 2016   #210893

Zdravím, jde jen pouze o kosmetickou úpravu programu, při tomto příkazu 

system(("ping " + ip2 +"." +ret3+ "." +ret4+"."+i + " -n 1" + " -w 10 > data.txt" ).c_str());

problikne cmd, jde ho nechat nějak běžet na pozadí, nebo ho prostě jakkoliv skrýt, aby nebyl vidět? 

Tady je případně celý program.

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <stdio.h>
#include <conio.h>
#include <string>
#include <windows.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

TForm1 *Form1;
char ret[20];

int x=0,y=0;
char ret2[20],ret3[20],ret4[20],ret5[20],ret6[20];
FILE *sou;
FILE *vys;
int n=0,rozsah=2,sta=1;
char slovo[20],slovo1[20]="bajty=32";
AnsiString ip2;


//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{

  strcpy(ret,Edit1->Text.c_str());

         for (int i=0; i<=20;i++)  {

    if ((ret[i]=='0')||(ret[i]=='1')||(ret[i]=='2')||(ret[i]=='3')||(ret[i]=='4')||(ret[i]=='5')||(ret[i]=='6')||(ret[i]=='7')||(ret[i]=='8')||(ret[i]=='9'))
    {
    ret2[x]=ret[i];
    x++;
    }
     else
     {
     x=i;
     i=20;
     }
    }
 x=x+1;
    //------------------------------------------------

    for (int i=x; i<=20;i++)  {

    if ((ret[i]=='0')||(ret[i]=='1')||(ret[i]=='2')||(ret[i]=='3')||(ret[i]=='4')||(ret[i]=='5')||(ret[i]=='6')||(ret[i]=='7')||(ret[i]=='8')||(ret[i]=='9'))
    {
    ret3[y]=ret[i];
    y++;
    }
    else
     {
     y=i;
     i=20;
     }
    }
   y=y+1;
   x=0;

  //------------------------------------------------
   for (int i=y; i<=20;i++)  {

    if ((ret[i]=='0')||(ret[i]=='1')||(ret[i]=='2')||(ret[i]=='3')||(ret[i]=='4')||(ret[i]=='5')||(ret[i]=='6')||(ret[i]=='7')||(ret[i]=='8')||(ret[i]=='9'))
    {
    ret4[x]=ret[i];
    x++;
    }
    else
     {
     x=i;
     i=20;
     }
    }
   x=x+1;

   y=0;
    //------------------------------------------------
   for (int i=x; i<=20;i++)  {

    if ((ret[i]=='0')||(ret[i]=='1')||(ret[i]=='2')||(ret[i]=='3')||(ret[i]=='4')||(ret[i]=='5')||(ret[i]=='6')||(ret[i]=='7')||(ret[i]=='8')||(ret[i]=='9'))
    {
    ret5[y]=ret[i];
    y++;
    }
    else
     {
     y=i;
     i=20;
     }
    }
   y=y+1;
   x=0;
    //------------------------------------------------
   for (int i=y; i<=20;i++)  {

    if ((ret[i]=='0')||(ret[i]=='1')||(ret[i]=='2')||(ret[i]=='3')||(ret[i]=='4')||(ret[i]=='5')||(ret[i]=='6')||(ret[i]=='7')||(ret[i]=='8')||(ret[i]=='9'))
    {
    ret6[x]=ret[i];
    x++;
    }
    else
     {
     x=i;
     i=20;
     }
    }
   x=x+1;
   //------------------------------------------------
  vys=fopen("vysledek.txt","w");
     sta=StrToInt(ret5);
     rozsah=2;
n=32-StrToInt(ret6);

        for(int i=1; i<n; i++){
	rozsah=rozsah*2;
        }

        rozsah=rozsah+StrToInt(ret5);
        ProgressBar1->Min=StrToInt(ret5);
         ProgressBar1->Max=rozsah-1;
          //------------------------------------------------
        for(int i=StrToInt(ret5); i<rozsah; i++){
  if(i<=255)
  {
  ProgressBar1->Position=i;
  Label8->Caption=sta;
  Refresh();
  ip2 = ret2;

  system(("ping " + ip2 +"." +ret3+ "." +ret4+"."+i + " -n 1" + " -w 10 > data.txt" ).c_str());

          sou=fopen("data.txt","r");

    while (!feof(sou))
          {
          fscanf(sou,"%s",&slovo);
          if(!feof(sou))
                         {
                         if (strcmpi(slovo1,slovo)==0)

                           fprintf(vys,"Stanice %i ... OK\n",sta);
                         }

          }
          sta=sta+1;
          fclose(sou);
         }
     }
     fclose(vys);
     Memo1->Lines->LoadFromFile("vysledek.txt");
      system("del data.txt" );
      system("del vysledek.txt" );
     }



//---------------------------------------------------------------------------


Tomáš
C / C++ › c++ roztrhnutí IP
24. 5. 2016   #210892

Tak jsem to vyřešil takhle a funguje to náramně :3

strcpy(ret,Edit1->Text.c_str());

         for (int i=0; i<=20;i++)  {

    if ((ret[i]=='0')||(ret[i]=='1')||(ret[i]=='2')||(ret[i]=='3')||(ret[i]=='4')||(ret[i]=='5')||(ret[i]=='6')||(ret[i]=='7')||(ret[i]=='8')||(ret[i]=='9'))
    {
    ret2[x]=ret[i];
    x++;
    }
     else
     {
     x=i;
     i=20;
     }
    }
 x=x+1;
    //------------------------------------------------

    for (int i=x; i<=20;i++)  {

    if ((ret[i]=='0')||(ret[i]=='1')||(ret[i]=='2')||(ret[i]=='3')||(ret[i]=='4')||(ret[i]=='5')||(ret[i]=='6')||(ret[i]=='7')||(ret[i]=='8')||(ret[i]=='9'))
    {
    ret3[y]=ret[i];
    y++;
    }
    else
     {
     y=i;
     i=20;
     }
    }
   y=y+1;
   x=0;

  //------------------------------------------------
   for (int i=y; i<=20;i++)  {

    if ((ret[i]=='0')||(ret[i]=='1')||(ret[i]=='2')||(ret[i]=='3')||(ret[i]=='4')||(ret[i]=='5')||(ret[i]=='6')||(ret[i]=='7')||(ret[i]=='8')||(ret[i]=='9'))
    {
    ret4[x]=ret[i];
    x++;
    }
    else
     {
     x=i;
     i=20;
     }
    }
   x=x+1;

   y=0;
    //------------------------------------------------
   for (int i=x; i<=20;i++)  {

    if ((ret[i]=='0')||(ret[i]=='1')||(ret[i]=='2')||(ret[i]=='3')||(ret[i]=='4')||(ret[i]=='5')||(ret[i]=='6')||(ret[i]=='7')||(ret[i]=='8')||(ret[i]=='9'))
    {
    ret5[y]=ret[i];
    y++;
    }
    else
     {
     y=i;
     i=20;
     }
    }
   y=y+1;
   x=0;
    //------------------------------------------------
   for (int i=y; i<=20;i++)  {

    if ((ret[i]=='0')||(ret[i]=='1')||(ret[i]=='2')||(ret[i]=='3')||(ret[i]=='4')||(ret[i]=='5')||(ret[i]=='6')||(ret[i]=='7')||(ret[i]=='8')||(ret[i]=='9'))
    {
    ret6[x]=ret[i];
    x++;
    }
    else
     {
     x=i;
     i=20;
     }
    }
Tomáš
C / C++ › c++ roztrhnutí IP
23. 5. 2016   #210857

Zavedení všech proměných do svýho programu jsem zvládl, ale je tu pár chybiček, se kterýma nevim co s nima, nebude třeba nějaký ten stringlist zadefinovat? https://ctrlv.cz/GNUY

Připojen obrázek.

Tomáš
C / C++ › c++ roztrhnutí IP
23. 5. 2016   #210854

#20 hlucheucho
Díky moc, jdu to zkusit dát dohromady :) Kdyžtak se ozvu :P

Tomáš
C / C++ › c++ roztrhnutí IP
23. 5. 2016   #210850

#17 hlucheucho
Takže části IP najdu pod StringList->Strings[i] a ten port kde? To je poslední dotaz, vážně jsi mi pomohl :)

Tomáš
C / C++ › c++ roztrhnutí IP
23. 5. 2016   #210848

#14 hlucheucho
Takže chápu dobře, že ten castiIP[1] bude číslo před první tečkou? Jestli jo, tak je to vážně super :) Teď ještě jak z toho dostat masku za lomítkem... :D Vážně díky :)

Tomáš
C / C++ › c++ roztrhnutí IP
23. 5. 2016   #210845

#12 hlucheucho
Nebyl by jsi ochotný mi to pomoct dát dohromady? :D Jsem ve druháku a s buildrem jsme dávno skončili vážně se základama... Dnešekm nad tím budu mít 30h na praxích se spolužákem, snažili jsme se to vymyslet/vygooglit a dát dohromady samy, ale už si vážně nevíme rady... Byl by jsem za pomoc se složením toho kódu vážně vděčný... Můžu sem hodit odkaz na celý projekt třeba v raru.

Tomáš
C / C++ › c++ roztrhnutí IP
23. 5. 2016   #210843

#10 hlucheucho 

Takhle je to funkční, ale každá část IP je v jiném editu, potřebuju to napsat do jednoho a rozdělit.

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <stdio.h>
#include <conio.h>
#include <string>
#include <windows.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

TForm1 *Form1;
FILE *sou;
FILE *vys;
int n=0,rozsah=2,sta=1;
char slovo[20],slovo1[20]="bajty=32";



//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  vys=fopen("vysledek.txt","w");
     sta=StrToInt(Edit4->Text);
     rozsah=2;
n=32-StrToInt(Edit5->Text);

        for(int i=1; i<n; i++){
	rozsah=rozsah*2;
        }
        rozsah=rozsah+StrToInt(Edit4->Text);


        for(int i=StrToInt(Edit4->Text); i<rozsah; i++){
  if(i<=255)
  {
  Label8->Caption=sta;
  Refresh();
  system(("ping " + Edit1->Text +"." +Edit2->Text+ "." +Edit3->Text+"."+i + " -n 1" + " -w 10 > data.txt" ).c_str());

          sou=fopen("data.txt","r");

    while (!feof(sou))
          {
          fscanf(sou,"%s",&slovo);
          if(!feof(sou))
                         {
                         if (strcmpi(slovo1,slovo)==0)

                           fprintf(vys,"Stanice %i ... OK\n",sta);
                         }

          }
          sta=sta+1;
          fclose(sou);
         }
     }
     fclose(vys);
     Memo1->Lines->LoadFromFile("vysledek.txt");

     }



//---------------------------------------------------------------------------


Tomáš
C / C++ › c++ roztrhnutí IP
23. 5. 2016   #210841

#8 KIIV
Je to v novym čistym borland souboru, pod button click akci a jediný co jsem dopsal, aby se první proměnná hodila do Labelu, jestli to funguje, ale má to někde problém, že se to nespustí

Tomáš
C / C++ › c++ roztrhnutí IP
23. 5. 2016   #210839

#6 KIIV
To moc nefunguje :/ https://ctrlv.cz/odqS

Tomáš
C / C++ › c++ roztrhnutí IP
23. 5. 2016   #210837

#4 KIIV
Tohle funguje hezky :D Celkem se i orientuju, ale potřebuju mít každou tu hodnotu zvlášť, protože pomocí masky je třeba spočítat cidr a pingovat rozsah, takže by bylo fajn, aby každý z toho čísla byla samostatná proměnná. + je to v broland c++ builderu, to jsem měl asi říct na začátku :D Vážně děkuju za pomoc :( Mám funkční variantu, kde vlastně byla každá část IP v samostatném editu, ale je třeba to dát do jednoho. Jde to nějak takhle roztrhnout? :)

#2 KIIV
Nemohl by jsi mi s tím kódem trošku pomoct? :) Jsem úplný začátečník.

Tomáš
C / C++ › c++ roztrhnutí IP
23. 5. 2016   #210835

#2 KIIV
Nemohl by jsi mi s tím kódem trošku pomoct? :) Jsem úplný začátečník.

Tomáš
C / C++ › c++ roztrhnutí IP
23. 5. 2016   #210833

Zdravím, programuji pingovací utilitku, ale mám problém v tom, když zadám např.: 10.1.140.1/27 jak tuto IP pomocí stringu roztrhnout na string 10 , 1, 140, 1, 27, každé číslo zvlášť... Předem díky za odpovědi :)

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý