📄 main.cpp
字号:
//----------------------------------------------------------------------------
//Borland C++Builder
//Copyright (c) 1987, 1997-2002 Borland International Inc. All Rights Reserved.
//----------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "main.h"
#include <stdio.h>
//---------------------------------------------------------------------------
#pragma link "ScktComp"
#pragma resource "*.dfm"
TChatForm *ChatForm;
//---------------------------------------------------------------------------
__fastcall TChatForm::TChatForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
AnsiString __fastcall TChatForm::FormatSize(double value) // pass in Kbytes
{
AnsiString str_to_return;
if ((value < -1000) || (value > 10000))
{
value = value / 1024;
if ((value < -1000) || (value > 10000))
{
value = value / 1024;
str_to_return = FloatToStrF(value,ffNumber,15,2) + " GB";
}
else
str_to_return = FloatToStrF(value,ffNumber,15,2) + " MB";
}
else
if (value < 1.0)
{
value = value * 1024;
str_to_return = AnsiString((int)value) + " Bytes";
}
else
str_to_return = AnsiString((int)value) + " KB";
return str_to_return;
}
//---------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TChatForm::FileConnectItemClick(TObject *Sender)
{
if (ClientSocket->Active)
{
ClientSocket->Active = false;
}
if (InputQuery("Computer to connect to", "Address Name:", Server))
{
if (Server.Length() > 0)
{
ClientSocket->Host = Server;
ClientSocket->Active = true;
FileListenItem->Checked = false;
}
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TChatForm::Exit1Click(TObject *Sender)
{
ServerSocket->Close();
ClientSocket->Close();
Close();
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TChatForm::ClientSocketConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar1->Panels->Items[0]->Text = "Connect to: " + Socket->RemoteHost;
Disk.IP = Socket->LocalAddress;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TChatForm::Disconnect1Click(TObject *Sender)
{
ClientSocket->Active = false;
ServerSocket->Active = false;
StatusBar1->Panels->Items[0]->Text = "Listening...";
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TChatForm::ServerSocketAccept(TObject *Sender,
TCustomWinSocket *Socket)
{
IsServer = true;
StatusBar1->Panels->Items[0]->Text = "Connect to: " + Socket->RemoteAddress;
// Disk.IP = Socket->RemoteAddress;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TChatForm::ClientSocketError(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
StatusBar1->Panels->Items[0]->Text = "Error connecting";
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TChatForm::ServerSocketClientDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar1->Panels->Items[0]->Text = "Listening...";
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TChatForm::ButtonGetDriveInfoClick(TObject *Sender)
{
AnsiString temp;
AnsiString Drive = AnsiString(DriveComboBox1->Drive) + ":\\"; //EditDrive->Text;
Disk.drive_name = AnsiString(DriveComboBox1->Drive);
unsigned int drivetype = GetDriveType(Drive.c_str ());
switch (drivetype)
{
case 1 : temp = "No root directory"; return;
case DRIVE_REMOVABLE : temp = "Removable"; break;
case DRIVE_FIXED : temp = "Fixed"; break;
case DRIVE_REMOTE : temp = "Remote (network) drive"; break;
case DRIVE_CDROM : temp = "CD-ROM"; break;
case DRIVE_RAMDISK : temp = "RAM disk"; break;
default: temp = "Unknown"; return;
}
LabelDriveType->Caption = temp;
temp = "";
DWORD VolumeSerialNumber = 0;
DWORD MaximumComponentLength = 0;
DWORD FileSystemFlags = 0;
char * volumeinfo = new char[255];
volumeinfo[0] = 0;
char* FileSystemNameBuffer = new char[255];
FileSystemNameBuffer[0] = 0;
GetVolumeInformation (Drive.c_str (), volumeinfo,
255, &VolumeSerialNumber,
&MaximumComponentLength, &FileSystemFlags, FileSystemNameBuffer,255);
if (strlen(volumeinfo) != 0)
EditVolumeInfo->Text = volumeinfo ;
else
EditVolumeInfo->Text = "- no label -";
//Translate integer to chars for serial number
char string1[35];
char string2[35];
if (VolumeSerialNumber > 0)
{
unsigned int bottom = (LOWORD(VolumeSerialNumber));
unsigned int top = (HIWORD(VolumeSerialNumber));
sprintf(string1,"%04X",top);
sprintf(string2,"%04X",bottom);
LabelSerialNum->Caption = AnsiString(string1) + "-" + AnsiString(string2);
}
else
LabelSerialNum->Caption = "- unknown -";
if (MaximumComponentLength > 0)
LabelMaxComponentLength->Caption = AnsiString(MaximumComponentLength) + " characters";
else
LabelMaxComponentLength->Caption = "- unknown -";
if (strlen(FileSystemNameBuffer) != 0)
LabelFileSystemNameBuffer->Caption = FileSystemNameBuffer;
else
LabelFileSystemNameBuffer->Caption = "- unknown -";
LabelFileSystemFlags->Caption = ""; //AnsiString(FileSystemFlags);
if (FileSystemFlags & FS_CASE_IS_PRESERVED)
temp += AnsiString("Filename case is preserved.\n");
if (FileSystemFlags & FS_CASE_SENSITIVE)
temp += AnsiString("Lookup is case-sensitive.\n");
if (FileSystemFlags & FS_UNICODE_STORED_ON_DISK)
temp += AnsiString("Supports Unicode in filenames.\n");
if (FileSystemFlags & FS_PERSISTENT_ACLS)
temp += AnsiString("Preserves and enforces ACLs.\n");
if (FileSystemFlags & FS_FILE_COMPRESSION)
temp += AnsiString("Supports file-based compression.\n");
if (FileSystemFlags & FS_VOL_IS_COMPRESSED)
temp += AnsiString("Volume is compressed. (i.e., DoubleSpace).\n");
LabelFileSystemFlags->Caption = temp;
DWORD spc = 0; //Sectors per cluster
DWORD bps = 0; //Bytes per cluster
DWORD cluster = 0; //clusters
DWORD freeclust = 0; //freeclusters
GetDiskFreeSpace (Drive.c_str (),&spc,&bps,&freeclust,&cluster) ;
unsigned long v1 = (unsigned long)cluster;
unsigned long v2 = (unsigned long) spc;
unsigned long v3 = (unsigned long) bps;
unsigned long volsize = (v1 * v2)/1024 * v3;
LabelVolumeSize->Caption = AnsiString(FormatSize(volsize));
Disk.volume_size = AnsiString(FormatSize(volsize));
unsigned long free_bytes = (freeclust * spc)/1024 * bps;
LabelFreeSpace->Caption = AnsiString(FormatSize(free_bytes));
Disk.free = AnsiString(FormatSize(free_bytes));
if (volsize > 0)
LabelUsed->Caption = AnsiString(((volsize - free_bytes) * 100) / volsize) + " %";
else
LabelUsed->Caption = "n/a";
}
void __fastcall TChatForm::Button1Click(TObject *Sender, TCustomWinSocket *Socket)
{
ClientSocket->Socket->SendText("Free " + Disk.free + " ");
ClientSocket->Socket->SendText("Disk name " + Disk.drive_name+":" + " ");
ClientSocket->Socket->SendText("Volume " + Disk.volume_size + " ");
ClientSocket->Socket->SendText("IP " + Disk.IP + " ");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -