#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
Příspěvky odeslané z IP adresy 109.71.213.–
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" );
}
//---------------------------------------------------------------------------
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;
}
}
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
#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.
#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");
}
//---------------------------------------------------------------------------
#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.
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 :)