→ Для вступления в общество новичков и профессионалов программирования, пожалуйста нажмите здесь ...

Форум программистов: C++, Basic, Delphi, Pascal, JavaScript
Логин: Пароль:
Запомнить?  
@Mail.ru



Начать новую тему Ответить на тему  [ 1 сообщение ] 
C++. Проблема с раскидкой текста по ячейкам StrinGrid 
Автор Сообщение
Начинающий

Регистрация: 20.04.2009
Сообщения: 1

Репутация: 0 [ ? ]
Сообщение C++. Проблема с раскидкой текста по ячейкам StrinGrid
Краткое пояснение - В моей клиент-серверной программе не получается разбить текст, присланный клиентом на сервер, по сетке StrinGrid. Поскольку более конкретный вопрос поставить не получится, прошу помощи у знающих людей и выкладываю сюда части кода программы с детальными пояснениями:
Код:


void __fastcall TForm1::Button3Click(TObject *Sender)
{
AnsiString t;
for(int i=0;i<ServerSocket1->Socket->ActiveConnections;i++)
{ t=ServerSocket1->Socket->Connections[i]->RemoteHost;
ServerSocket1->Socket->Connections[i]->SendText("1");
}
}

Таким образом, программа-сервер определяет активные соединения и при нахождении таковых отсылает сообщение - единичку.

Код:


void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
AnsiString msg;
msg = Socket->ReceiveText();

if (msg=="1")
{ WinExec("1.bat", SW_RESTORE);
Sleep(2000);
ListBox1->Items->LoadFromFile("crash.txt");

char p[100];
strcpy(p, ListBox1->Items->Strings[5].c_str());
int size = ListBox1->Items->Strings[5].Length();

int t=0;
int ia=0;
while(p[ia]==':')
{
ia++; t=ia;
}

AnsiString p1="";
ia=t+1;
while(p[ia]<size)
{ p1+=p[ia];
ia++;
}

strcpy(p, ListBox1->Items->Strings[26].c_str());
size = ListBox1->Items->Strings[26].Length();

t=0;
ia=0;
while(p[ia]==':')
{
ia++; t=ia;
}

AnsiString p2="";
ia=t+1;
while(p[ia]<size)
{ p2+=p[ia];
ia++;
}

strcpy(p, ListBox1->Items->Strings[30].c_str());
size = ListBox1->Items->Strings[30].Length();

t=0;
ia=0;
while(p[ia]==':')
{
ia++; t=ia;
}

AnsiString p3="";
ia=t+1;
while(p[ia]<size)
{ p3+=p[ia];
ia++;
}

ClientSocket1->Socket->SendText(p1+'#'+p2+'#'+p3);
}
}

Дальше программа-клиент принимает сообщение и в данном случае, когда оно равно единице, запускает .bat-файл, согласно коду которого (ipconfig /all) в компонент ListBox загружается конфигурация опрашиваемого компьютера. Далее обработчики вырезают заданные строки 5, 26 и 30, а в этих строках только необходимые мне данные (думаю, в подробности можно не вдаваться). Затем через решетку я их соединяю и отсылаю программе-серверу.

Код:


void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
AnsiString msg;
msg = Socket->ReceiveText();

StringGrid1->Cells[0][0]="PC-Name";
StringGrid1->Cells[1][0]="Physical adress";
StringGrid1->Cells[2][0]="IP-adress";

StringGrid1->RowCount+=1;
AnsiString p1="";
char p[50];
int size = msg.Length();
strcpy(p, msg.c_str());

int t=0;
int ia=0;
while(p[ia]!='#')
{ p1+=p[ia];
ia++; t=ia;
}

StringGrid1->Cells[0][1]=p1;

AnsiString p2="";
ia=t+1;
while(p[ia]!='#')
{ p2+=p[ia];
ia++; t=ia;
}

StringGrid1->Cells[1][1]=p2;

AnsiString p3="";
ia=t+1;
while(ia<size)
{ p3+=p[ia];
ia++; t=ia;
}

StringGrid1->Cells[2][1]=p3;
}

И вот здесь, в программе-сервере облом - не получается правильно разбить присланные данные по ячейкам. В ячейку [0][1] вместо "pc" попадает "i", в ячейку [1][1] вместо "00-1F-C6-4E-87-36" попадает "Физический адрес . . . . . . . . . . : 00-1", в ячейку [2][1] вместо "10-тра-та-та" попадает "4|||8"...

В общем, ребята, прошу вашей помощи и заранее большое спасибо!


20.04.2009 15:26
Профиль
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 


Кто сейчас на конференции

Зарегистрированные пользователи: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
cron
© 2013 «Форум программистов Украины»