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

Форум программистов: 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 сообщение ] 


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

Зарегистрированные пользователи: нет зарегистрированных пользователей


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

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