我正在尝试制作一个聊天应用程序,将消息发布到以下形式的备忘录中:
USERNAME-> Message
但它是这样张贴到我的备忘录:
USERNAME
这是我的代码:
const cnMaxUserNameLen = 254; var sUserName: string; dwUserNameLen: DWORD; text : string; begin dwUserNameLen := cnMaxUserNameLen - 1; SetLength(sUserName,cnMaxUserNameLen); GetUserName(PChar(sUserName),dwUserNameLen); SetLength(sUserName,dwUserNameLen); text:= sUserName + '-> ' + edit1.Text; memo1.Lines.Add(text);
有关如何解决它的任何建议?
解决方法
dwUserNameLen
includes the null-terminator中返回的值.因此您将其包含在文本中.当字符串发送到TMemo后面的Windows编辑控件时,该字符串将作为以null结尾的字符串传递.因此,用户名中的stray null将终止数据传输.
像这样更改代码:
SetLength(sUserName,dwUserNameLen-1);
如果出现错误,您还应检查GetUserName的返回值,但我会将该详细信息留给您.