代码如下:
procedure TPerformSocket.PerformGetAllPos(DeptID: string; SocketID: string); //取得所有的吧台
var
wl: string;
SocketTo: TCustomWinSocket;
PSendInfo: pwidechar;
begin
SocketTo := TCustomWinSocket.Create(StrToInt(SocketID));
wl := 'select PosName from T_Pos where DeptID = ' + '''' + DeptID + '''';
if DM.SearchSQL(wl, DM.AQ) then
begin
wl := '';
while not DM.AQ.Eof do
begin
wl := wl + DM.AQ.FieldByName('PosName').AsString + ',';
DM.AQ.Next;
end;
GetMem(PSendInfo, Length(wl));
PSendInfo := pwidechar(wl); //这个地方转换完以后PsendInfo就变成乱码了
SocketTo.SendBuf(PSendInfo^, Length(PSendInfo));
end
else
begin
SocketTo.SendText('');
end;
//谢谢了
procedure TPerformSocket.PerformGetAllPos(DeptID: string; SocketID: string); //取得所有的吧台
var
wl: string;
SocketTo: TCustomWinSocket;
PSendInfo: pwidechar;
begin
SocketTo := TCustomWinSocket.Create(StrToInt(SocketID));
wl := 'select PosName from T_Pos where DeptID = ' + '''' + DeptID + '''';
if DM.SearchSQL(wl, DM.AQ) then
begin
wl := '';
while not DM.AQ.Eof do
begin
wl := wl + DM.AQ.FieldByName('PosName').AsString + ',';
DM.AQ.Next;
end;
GetMem(PSendInfo, Length(wl));
PSendInfo := pwidechar(wl); //这个地方转换完以后PsendInfo就变成乱码了
SocketTo.SendBuf(PSendInfo^, Length(PSendInfo));
end
else
begin
SocketTo.SendText('');
end;
//谢谢了
var
wl: string;
SocketTo: TCustomWinSocket;
PSendInfo: pwidechar;
begin
SocketTo := TCustomWinSocket.Create(StrToInt(SocketID));
wl := 'select PosName from T_Pos where DeptID = ' + '''' + DeptID + '''';
if DM.SearchSQL(wl, DM.AQ) then
begin
wl := '';
while not DM.AQ.Eof do
begin
wl := wl + DM.AQ.FieldByName('PosName').AsString + ',';
DM.AQ.Next;
end;// GetMem(PSendInfo, Length(wl));
// PSendInfo := pwidechar(wl); //这个地方转换完以后PsendInfo就变成乱码了
//不要用pwidechar if wl <> '' then
SocketTo.SendBuf(wl[1], Length(w1));
end
else
begin
SocketTo.SendText('');
end;
procedure TPerformSocket.PerformGetAllPos(DeptID: string; SocketID: string); //取得所有的吧台
var
wl: string;
w2: widestring;
SocketTo: TCustomWinSocket;
begin
SocketTo := TCustomWinSocket.Create(StrToInt(SocketID));
wl := 'select PosName from T_Pos where DeptID = ' + '''' + DeptID + '''';
if DM.SearchSQL(wl, DM.AQ) then
begin
wl := '';
while not DM.AQ.Eof do
begin
wl := wl + DM.AQ.FieldByName('PosName').AsString + ',';
DM.AQ.Next;
end; if wl <> '' then
begin
w2 := w1;
SocketTo.SendBuf(w2[1], Length(w1) * 2);
end;
end
else
begin
SocketTo.SendText('');
end;
w2[1]是什么意思??
它只会将w2的值传递给sendbuf,而不是w2的地址