如果我要在C++中创建一个简单的对象,返回成员的地址与返回指针之间的区别是什么.据我所知,C++没有自动垃圾收集,因此它不会保留引用计数.那么为什么会有人这样做呢:
class CRectangle {
public:
string& getName( );
int& getWidth( );
int& getHeight( );
private:
string name;
int height;
int width;
};
Run Code Online (Sandbox Code Playgroud)
而不是这样:
class CRectangle {
public:
string* getName( );
int* getWidth( );
int* getHeight( );
private:
string name;
int height;
int width;
};
Run Code Online (Sandbox Code Playgroud)
我意识到这些将允许您访问成员数据,但我并不关心这个简单示例中的正确封装.那么差异是什么?加速?可读性?样式?
看起来我的数据在使用HTTPapp.HTMLEncode(string)时会被破坏:String;
HTMLEncode( 'Jo&hn D<oe' ); // returns 'Jo&am'
Run Code Online (Sandbox Code Playgroud)
这是不正确的,并且正在破坏我的数据.有没有人对VCL组件有更好的建议?除了花时间编码所有案例
http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references
在了解了有关HTML的更多信息后,我发现不需要对链接中引用的其他字符进行编码.您只需要知道四个HTML保留字符
&,<,>,"
Run Code Online (Sandbox Code Playgroud)
VCL HTTPApp.HTMLEncode()函数的问题是由于缓冲区大小和默认Unicode字符串类型的新Delphi 2009/2010规范,这可以通过@mason在下面说的方式修复,或者可以使用调用WideFormatBuf()而不是当前正在使用的FormatBuf().
我试图在VCL Forms应用程序中同步滚动两个TDBGrid组件,我很难拦截每个网格组件的WndProc而没有一些堆栈问题.我尝试在滚动事件下发送WM_VSCROLL消息,但这仍然导致不正确的操作.它需要用于单击滚动条,以及突出显示单元格或向上或向下鼠标按钮.整个想法是让两个网格彼此相邻,显示一种匹配对话框.
试着
SendMessage( gridX.Handle, WM_VSCROLL, SB_LINEDOWN, 0 );
Run Code Online (Sandbox Code Playgroud)
也
procedure TForm1.GridXCustomWndProc( var Msg: TMessage );
begin
Msg.Result := CallWindowProc( POldWndProc, gridX.Handle, Msg.Msg, Msg.wParam, Msg.lParam );
if ( Msg.Msg = WM_VSCROLL ) then
begin
gridY.SetActiveRow( gridX.GetActiveRow );
gridY.Perform( Msg.Msg, Msg.wParam, Msg.lParam );
SetScrollPos( gridY.Handle, SB_VERT, HIWORD( Msg.wParam ), True );
end;
end;
Run Code Online (Sandbox Code Playgroud)
和
procedure TForm1.GridxCustomWndProc( var Msg: TMessage );
begin
if ( Msg.Msg = WM_VSCROLL ) then
begin
gridY.SetActiveRow( gridX.GetActiveRow );
gridY.Perform( Msg.Msg, Msg.wParam, Msg.lParam );
SetScrollPos( gridY.Handle, SB_VERT, HIWORD( …Run Code Online (Sandbox Code Playgroud) 我正在开发一个我所使用的 Web 服务的 DLL,我添加了一些新代码,并希望通过 NUnit 测试套件对其进行编译和调试。我采取的步骤是。
在 Visual Studio 2008 中编写代码,输出目录指向我的应用程序 bin 目录 (C:\Program Files\etc...)。
当我启动 Web 服务进程并附加到它时,我收到警告,表明我的程序是在没有调试信息的情况下构建的,我发现如果我复制目录中的 .pdb 文件,那么C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\...我可以避免警告,但仍然不会命中我的代码部分。
我停止了我的应用程序,重新构建了我的 DLL,然后重新启动了 Web 应用程序。
经过进一步检查,我注意到当我停止我的申请时。进程资源管理器并删除了临时 ASP.NET 目录下的子目录,然后当我重新启动进程时,子目录会重新创建,但是它们不包含我之前刚刚构建的新 DLL,而是包含旧版本的 DLL DLL 的,也没有 PDB 文件。
总而言之,我的问题是如何让 Visual Studio 在临时 ASP.NET 目录中构建和更新 DLL?有关更多 kudo,我如何让 Visual Studio 自动将 PDB 文件复制到同一临时目录,而无需任何批处理帮助?
理想情况下,我希望避免将 DLL 自动复制到临时目录,但通过今天的搜索,我找不到任何合适的方法来执行此操作,因为 ASP 内部结构完全超出了我的控制范围。
注意:当我通过外部可执行文件访问我的 Web 服务时,我禁用了 NUnit 上的卷影复制功能。
我是一名新手JavaScript程序员,我正在尝试学习更多内容.所以我转向大家寻求帮助,这个简单的问题:).我正在阅读的O'Reilly书籍一直指的是JavaScript代码的编译时间.我对函数式编程(方案等)的了解告诉我,JavaScript实际上是由浏览器解释的,很可能需要两遍JavaScript.
我的评估不正确吗?或者本书引用的编译时实际上只是解释器的第一次传递,类似于Perl或Python如何工作?谢谢!
我正在为一个较大的项目编写一个测试应用程序,似乎无法从 Windows 剪贴板检索 Unicode CSV 数据,我使用内置的 GetClipboardData api 调用成功检索 CF_UNICODETEXT,但是当我将 Unicode CSV 放在 MSExcel 中的剪贴板上时,尝试使用 CSV 格式检索,但得到的数据不正确。这是一些代码;
procedure TForm1.Button7Click(Sender: TObject);
var
hMem : THandle;
dwLen : DWord;
ps1, ps2 : pChar;
begin
OpenClipboard( form1.Handle );
RichEdit1.Lines.Clear;
try
if Clipboard.HasFormat( CF_UNICODETEXT ) then
begin
hMem := GetClipboardData( CF_UNICODETEXT );
ps1 := GlobalLock( hMem );
dwLen := GlobalSize( hMem );
ps2 := StrAlloc( 1 + dwLen );
StrLCopy( ps2, ps1, dwLen );
GlobalUnlock( hMem );
RichEdit1.Lines.Add( ps2 );
end
else
ShowMessage( 'No …Run Code Online (Sandbox Code Playgroud) 在我的服务器给客户端的响应中,我注意到了很多空白和换行符.响应主体似乎正在为解析的JSP的每一行发送换行符.我只是好奇,如果这是一个问题,有人已经写了一个bean吗?这是我甚至需要担心的事情吗?
示例JSP:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<%@page import="java.util.Date"%>
<%@page import="java.util.GregorianCalendar"%>
<%@page import="java.util.Properties"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.io.IOException"%>
<head>
<title>My Page!</title>
<% String message = "Hello World!"; %>
</head>
<body>
<div><%=message%></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
示例HTML响应:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!-- THESE ARE BLANK NEWLINES ... -->
<head>
<title>My Page!</title>
</head>
<body>
<div>Hello World!</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 如果TRichEdit中的文字是这样的;
'hello, world'#$D#$A
Run Code Online (Sandbox Code Playgroud)
然后以下例程显示TRUE.但是当RichEdit有
'test'#$D#$A#$D#$A'test'#$D#$A#$D#$A'test'#$D#$A
Run Code Online (Sandbox Code Playgroud)
然后例程显示FALSE.在我看来它是有缺陷的,因为它找到了逗号,但不是新行/换行.我创建了一个解决方法来代替字符串并找到我正在寻找的内容,但我仍然很好奇为什么Delphi函数不起作用.有任何想法吗?
procedure TForm1.Button1Click(Sender: TObject);
var
sTmp : String;
begin
sTmp := RichEdit1.Lines.GetText;
if ( ( Pos( ',', sTmp ) <> 0 ) or
( Pos( '"', sTmp ) <> 0 ) or
( Pos( '\n', sTmp ) <> 0 ) or
( Pos( '\r', sTmp ) <> 0 ) ) then
Label1.Caption := 'TRUE'
else
Label1.Caption := 'FALSE';
end;
Run Code Online (Sandbox Code Playgroud)
function CheckChars( const sData: String ): Boolean;
var
pCur : PChar;
begin …Run Code Online (Sandbox Code Playgroud) delphi ×4
html ×2
asp.net ×1
c++ ×1
clipboard ×1
coding-style ×1
delphi-2009 ×1
encoding ×1
java ×1
javascript ×1
jsp ×1
pointers ×1
reference ×1
scroll ×1
spring-mvc ×1
web-services ×1
windows-xp ×1