⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.pas

📁 网吧商品销售平台
💻 PAS
📖 第 1 页 / 共 2 页
字号:
begin
N1.Checked:=True;
N2.Checked:=False;
N1.Enabled:=False;
N2.Enabled:=True;
MesTCPServer.Active:=True;
IdTCPServer1.Active:=True;
end;

procedure TServerForm.ListView3DblClick(Sender: TObject);
var myini:Tinifile;
    ClassList:Tstrings;
    i:integer;
begin
if Listview3.SelCount =1 then
begin
try
if not FileExists(ExtractFilePath(paramstr(0))+'SetupInfo.ZTD') then
begin
myini:=Tinifile.Create(ExtractFilePath(paramstr(0))+'SetupInfo.ZTD');
myini.WriteString('授权','UserInfo','授权给:顶尖高手网吧城');
myini.WriteString('提示','NoteCaption','友情提示:请上机的同时保管好自己的物品,买东西时请准备好现金!');
myini.WriteFloat('饮料','可乐',1);
myini.WriteFloat('食品','方便面',3);
myini.WriteFloat('烟类','白沙烟',4.5);
myini.WriteString('消息','message1','麻烦过来一下,我这机子有点问题。');
myini.WriteString('消息','message2','我要买的东西上面没有,请过来一下。');
myini.WriteString('消息','message3','我有个游戏需要下载一下,请帮忙下载。');
myini.Free;
end;
myini:=Tinifile.Create(ExtractFilePath(paramstr(0))+'SetupInfo.ZTD');
ClassList:=TStringList.Create;
ClassList.Clear;
Listview1.Clear;
myini.ReadSection(Listview3.Selected.Caption,ClassList);
for i:=0 to ClassList.Count -1 do
begin
 with Listview1.Items.Add do
               begin
                    Caption := ClassList[i];
                    SubItems.Add(myini.ReadString(Listview3.Selected.Caption,ClassList[i],''));
              end;
end;
ClassList.Free;
myini.free;
except
exit;
end;
end;
end;

procedure TServerForm.O1Click(Sender: TObject);
begin
if Listview3.SelCount >0 then
begin
A2.Enabled:=True;
S4.Enabled:=True;
end
else
begin
A2.Enabled:=False;
S4.Enabled:=False;
end;
if Listview1.SelCount >0 then
begin
E1.Enabled:=True;
D1.Enabled:=True;
end
else
begin
E1.Enabled:=False;
D1.Enabled:=False;
end;
end;

procedure TServerForm.ListView1ContextPopup(Sender: TObject;
  MousePos: TPoint; var Handled: Boolean);
begin
if Listview3.SelCount >0 then
begin
S3.Enabled:=True;
A3.Enabled:=True;
end
else
begin
A3.Enabled:=False;
S3.Enabled:=False;
end;
if Listview1.SelCount >0 then
begin
N6.Enabled:=True;
N7.Enabled:=True;
end
else
begin
N6.Enabled:=False;
N7.Enabled:=False;
end;
end;

procedure TServerForm.A3Click(Sender: TObject);
var saleform:Tsaleform;
begin
try
saleform:=tsaleform.Create(self);
saleform.Caption:='增加商品';
saleform.Button1.Caption:='增加';
SaleForm.Edit1.Clear;
SaleForm.Edit2.Clear;
saleform.ShowModal;
finally
saleform.Free;
end;
end;

procedure TServerForm.N6Click(Sender: TObject);
var saleform:Tsaleform;
begin
if Listview1.SelCount =1 then
begin
try
saleform:=tsaleform.Create(self);
saleform.Caption:='修改商品';
saleform.Button1.Caption:='修改';
SaleForm.Edit1.Clear;
SaleForm.Edit2.Clear;
saleform.Edit1.Text:=Listview1.Selected.Caption;
saleform.Edit2.Text:=Listview1.Selected.SubItems.Text;
saleform.ShowModal;
finally
saleform.Free;
end;
end;
end;

procedure TServerForm.N7Click(Sender: TObject);
begin
if application.MessageBox('删除选中的商品,确定吗?','询问',MB_ICONQUESTION+MB_YESNO)=IDYES then
begin
Listview1.DeleteSelected;
end;
end;

procedure TServerForm.S3Click(Sender: TObject);
var myini:Tinifile;
var i:integer; 
begin
myini:=Tinifile.Create(ExtractFilePath(paramstr(0))+'SetupInfo.ZTD');
myini.EraseSection(Listview3.Selected.Caption);
for i:=0 to Listview1.Items.Count -1 do
begin
myini.WriteString(Listview3.Selected.Caption,Listview1.Items[i].Caption,Listview1.Items[i].SubItems.Text);
end;
myini.Free;
SendFileStream.Free;
if FileExists(ExtractFilePath(paramstr(0))+'ZTD.TMP') then DeleteFile(ExtractFilePath(paramstr(0))+'ZTD.TMP');
CopyFile(Pchar(ExtractFilePath(paramstr(0))+'SetupInfo.ZTD'),Pchar(ExtractFilePath(paramstr(0))+'ZTD.TMP'),False);
SendFileStream:=TFileStream.Create(Pchar(ExtractFilePath(paramstr(0))+'ZTD.TMP'),fmOpenRead);
application.MessageBox('商品已保存!','提示',MB_ICONINFORMATION);
exit;
end;

procedure TServerForm.Timer1Timer(Sender: TObject);
begin
ClearMemory;
StatusBar1.Panels[1].Text:='※※※  北京时间:'+formatdatetime('hh:mm:ss',now)+'  ※※※';
end;

procedure TServerForm.IdTCPServer1Execute(AThread: TIdPeerThread);
var cmd:string;
    ASize: Integer; //需要传输的流大小
begin
   with  AThread.Connection do //已经连街上的一个进程
   begin
   cmd := UpperCase(ReadLn); //客户端发送的命令字符串
   if cmd = 'BEGIN_CFG_FILE' then //开始传输
    begin
    //告诉远程传输文件的大小和文件名
    WriteLn(Format('%d|%s', [SendFileStream.Size, 'SalesInfo.dat']));
    exit;
    end;
    //按照指定位置传输文件
    SendFileStream.Seek(StrToInT(cmd), soFromBeginning); //转到文件流传输的位置
    ASize := Min(SendFileStream.Size - SendFileStream.Position, RecvBufferSize);
    //计算需要发送的大小,Min()函数在Math单元
    OpenWriteBuffer; //准备发送缓冲
    WriteStream(SendFileStream, false, false, ASize);
    //注意这个函数的参数。
    CloseWriteBuffer; //结束发送缓冲
    end;
end;

procedure TServerForm.MesTCPServerExecute(AThread: TIdPeerThread);  //这段代码写得乱,时间太紧,没有时间注释,不好意思哦
var mes,SALE_LIST:string;
    i,j:integer;
    sale_list_string,sale_list_clean,sale_price:TStrings;
    salelistform:tsalelistform;
    totalprice:REAL;
    ClientIP,computername:string;
begin
Athread.Start;
mes:=Athread.Connection.ReadLn;
if pos('SEND_MESSAGE',mes)>0 then
begin
Delete(mes,1,Length('SEND_MESSAGE'));
application.Minimize;
ClientIP:=Athread.Connection.Socket.Binding.PeerIP;
if FileExists(ExtractFilePath(paramstr(0))+'msg.wav') then
sndPlaySound(Pchar(ExtractFilePath(paramstr(0))+'msg.wav'),SND_ASYNC);
showmessageform(mes,ClientIP);
end;
if pos('SALE_SHOP_LIST',mes)>0 then
begin
application.Minimize;
try
Delete(mes,1,Length('SALE_SHOP_LIST'));
computername:=mes;
setlength(computername,10);
delete(computername,1,1);
computername:=trim(computername);
computername:='〖'+computername+'〗';
Delete(mes,1,10);
mes:=trim(mes);
SALE_LIST:=mes;
sale_list_string:=TStringList.Create;
sale_list_string.Clear;
sale_list_string.Delimiter:='|';
sale_list_string.DelimitedText:=SALE_LIST;
sale_list_clean:=TStringList.Create;
sale_list_clean.Clear;
for i:=0 to sale_list_string.Count -1 do
begin
if trim(sale_list_string[i])<>'' then
sale_list_clean.Add(sale_list_string[i]);
end;
sale_list_string.Free;
salelistform:=tsalelistform.create(nil);
salelistform.SaleListView.Clear;
salelistform.SaleListView.Update;
sale_price:=TStringList.Create;
for i:=0 to sale_list_clean.Count -1 do
begin
with salelistform.SaleListView.Items.Add do
begin
sale_price.Clear;
sale_price.Delimiter:='=';
sale_price.DelimitedText:=sale_list_clean[i];
Caption:=sale_price[0];
SubItems.Add(sale_price[1]);
SubItems.Add(sale_price[2]);
end;
end;
sale_price.Free;
sale_list_clean.Free;
totalprice:=0.00;
for i:=0 to salelistform.SaleListView.Items.Count -1 do
begin
totalprice:=totalprice+strtofloat(salelistform.SaleListView.Items[i].SubItems[0])*strtofloat(salelistform.SaleListView.Items[i].SubItems[1]);
end;
saleListform.PriceLabel.Caption:=FormatFloat('0.00',totalprice);
saleListform.clientIP:=AThread.Connection.Socket.Binding.PeerIP;
saleListform.Caption:='商品销售清单'+'(来自计算机'+computername+')';
saleListform.checkok:=False;
if FileExists(ExtractFilePath(paramstr(0))+'sale.wav') then
begin
sndPlaySound(PAnsiChar(ExtractFilePath(paramstr(0))+'sale.wav'),SND_ASYNC);
end;
salelistform.Showmodal;
finally
salelistform.Free;
end;
exit;
end;

end;

procedure TServerForm.FormDestroy(Sender: TObject);
begin
SendFileStream.Free;
SkinData1.Active:=False;
IdTCPServer1.Active:=False;
MesTCPServer.Active:=False;
SkinData1.Free;
TrayIcon1.Free;
MesTCPServer.Free;
IdTCPServer1.Free;
halt;
end;

procedure TServerForm.Timer2Timer(Sender: TObject);
var myini:Tinifile;
    ComputerString:TStrings;
    i:integer;
begin
Timer2.Enabled:=False;
Listview2.Update;
Listview2.Clear;
if FileExists(ExtractFilePath(paramstr(0))+'log.txt') then
begin
myini:=Tinifile.Create(ExtractFilePath(paramstr(0))+'log.txt');
ComputerString:=TStringList.Create;
ComputerString.Clear;
myini.ReadSections(ComputerString);
for i:=0 to ComputerString.Count -1 do
begin
with Listview2.Items.Add do
begin
Caption:=ComputerString[i];
end;
end;
ComputerString.Free;
myini.Free;
end;
end;

procedure TServerForm.ListView2Click(Sender: TObject);
var myini:Tinifile;
    i,j:integer;
   fromip,date,time,content:string;
begin
if Listview2.SelCount =1 then
begin
try
if FileExists(ExtractFilePath(paramstr(0))+'log.txt') then
begin
myini:=Tinifile.Create(ExtractFilePath(paramstr(0))+'log.txt');
Listview4.Clear;
j:=messagecount;
for i:=1 to j do
begin
with Listview4.Items.Add do
begin
if  trim(myini.ReadString(Listview2.Selected.Caption,'fromip'+inttostr(j),''))<>'' then fromip:=myini.ReadString(Listview2.Selected.Caption,'fromip'+inttostr(j),'');
if  trim(myini.ReadString(Listview2.Selected.Caption,'date'+inttostr(j),''))<>'' then  date:=myini.ReadString(Listview2.Selected.Caption,'date'+inttostr(j),'');
if  trim(myini.ReadString(Listview2.Selected.Caption,'time'+inttostr(j),''))<>'' then time:=myini.ReadString(Listview2.Selected.Caption,'time'+inttostr(j),'');
if  trim(myini.ReadString(Listview2.Selected.Caption,'content'+inttostr(j),''))<>'' then content:=myini.ReadString(Listview2.Selected.Caption,'content'+inttostr(j),'');
caption:=fromip;
subitems.Add(date);
subitems.Add(time);
subitems.Add(content);
j:=j-1;
end;
end;
myini.Free;
end;
except
exit;
end;
end;
end;

procedure TServerForm.ListView4DblClick(Sender: TObject);
var receiveform:Treceiveform;
begin
if Listview4.SelCount =1 then
begin
try
receiveform:=treceiveform.create(self);
receiveform.Caption:='查看计算机'+Listview2.Selected.Caption+'已发来消息:';
receiveform.memo1.clear;
receiveform.Memo1.Font.Color:=clRed;
receiveform.Memo1.Lines.Add('计算机名称:'+Listview2.Selected.Caption+chr(10)+chr(13));
receiveform.Memo1.Lines.Add('计算机IP地址:'+Listview4.Selected.Caption+chr(10)+chr(13));
receiveform.Memo1.Lines.Add('消息发送日期:'+Listview4.Selected.SubItems[0]+chr(10)+chr(13));
receiveform.Memo1.Lines.Add('消息发送时间:'+Listview4.Selected.SubItems[1]+chr(10)+chr(13));
receiveform.Memo1.Lines.Add('消息内容:'+chr(10)+chr(13)+Listview4.Selected.SubItems[2]);
receiveform.Showmodal;
finally
receiveform.Free;
end;
end;
end;

procedure TServerForm.U1Click(Sender: TObject);
var UpdateForm:TUpdateForm;
begin
//检查版本信息
if NeedUpdate=True then
begin
try
UpdateForm:=TUpdateForm.Create(self);
UpdateForm.Timer1.Enabled:=True;
UpdateForm.ShowModal;
finally
UpdateForm.Free;
end;
end
else
begin
application.MessageBox('当前已是最新版本,不需要升级!','提示',MB_ICONINFORMATION);
exit;
end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -