此代码导致DataGridView grid显示空行,尽管它有一个DataPropertyName设置为"MyProp1" 的列:
public class MyClass
{
public int MyProp1;
public int MyProp2;
public int MyProp3;
}
public class MyItems:IListSource
{
BindingList<MyClass> _items = new BindingList<MyClass>();
//..............................
//IListSource
public bool ContainsListCollection
{
get { return false; }
}
//IListSource
public System.Collections.IList GetList()
{
return _items;
}
}
MyItems i = new MyItems();
.............
//MyItems list is populated
.............
grid.DataSource = i;
Run Code Online (Sandbox Code Playgroud)
可能有什么不对?
如果我使用"MyProp1"列创建一个DataTable,其内容将以正确的方式显示.
我在许多示例中看到了一种用法(IDataReader而不是DbDataReader使用其他ADO.NET接口而不是相应的类).
我知道这IDataReader是一个接口,DbDataReader是一个类,依此类推......我的问题不是关于接口如何与类不同.
IDataReader 描述了通用数据读取器的接口.
DbDataReader 也是通用的(但是抽象类).
他们的用法示例似乎是等效的.
为什么要使用通用数据读取器接口而不是使用通用数据读取器类?哪些情况只需要使用界面?哪些情况只需要使用课程?
一个典型的例子:
DbCommand cmd = conn.CreateCommand();
.....................
using (IDataReader reader = cmd.ExecuteReader())
{
grid.DataSource = reader;
grid.DataBind();
}
Run Code Online (Sandbox Code Playgroud) 我有一个Rails控制器用于测试目的:
class MyTestController < ApplicationController
skip_before_action :verify_authenticity_token
def test1
end
def test2
end
def test3
end
def test4
end
def test5
end
........
end
Run Code Online (Sandbox Code Playgroud)
以下路线:
get '/my_test/test1', to: 'my_test#test1'
get '/my_test/test2', to: 'my_test#test2'
get '/my_test/test3', to: 'my_test#test3'
get '/my_test/test4', to: 'my_test#test4'
get '/my_test/test5', to: 'my_test#test5'
........................................
Run Code Online (Sandbox Code Playgroud)
如何为此控制器的每个未来公共方法创建一个路由,以排除每个方法添加一个路由的需要?
这是我的代码来监听客户端TCP套接字:
def initialize
@msg = ''
@messages = Queue.new
@socket = TCPSocket.open('127.0.0.1', 2000)
Thread.new do
loop do
ch = @socket.recv(1)
if ch == "\n"
puts @msg unless @msg.blank?
@msg = ''
else
@msg += ch
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
我不喜欢的是逐字节字符串连接.它应该不是内存效率高的.
read套接字读取的方法直到换行.例如,套接字可以读取直到某个自定义终结符字符0x00吗?
如果没有,那么你知道哪个内存高效的字符串正在添加?
我有一个带阻塞调用的Delphi 10多线程应用程序.当我退出时,有时不会从RAM卸载并且Delphi调试器不会停止.
如何(工具,方法)检测我的应用程序在哪个例程中等待?
如何使用TIdTcpClient接收具有以下条件的100字节字符串?:
我现在的最佳代码如下:
unit Unit2;
interface
uses
System.Classes, IdTCPClient;
type
TTcpReceiver = class(TThread)
private
_tcpc: TIdTCPClient;
_onReceive: TGetStrProc;
_buffer: AnsiString;
procedure _receiveLoop();
procedure _postBuffer;
protected
procedure Execute(); override;
public
constructor Create(); reintroduce;
destructor Destroy(); override;
property OnReceive: TGetStrProc read _onReceive write _onReceive;
end;
implementation
uses
System.SysUtils, Vcl.Dialogs, IdGlobal, IdExceptionCore;
constructor TTcpReceiver.Create();
begin
inherited Create(True);
_buffer := '';
_tcpc := TIdTCPClient.Create(nil);
//_tcpc.Host := '192.168.52.175';
_tcpc.Host := '127.0.0.1';
_tcpc.Port := 1;
_tcpc.ReadTimeout := 1000;
_tcpc.Connect();
Suspended := False;
end; …Run Code Online (Sandbox Code Playgroud) 我有一个名为DataCapture.dpr的基本文件
program DataCapture;
Run Code Online (Sandbox Code Playgroud)
内.
然后我必须给服务本身另一个名字,以避免名称冲突:
TDataCaptureService = class(TService)
Run Code Online (Sandbox Code Playgroud)
现在,当我注册它时,该服务在"DataCaptureService"注册表项下注册,但我想:
怎么做到这一点?
我从Delphi IDE的模板编写了一个Delphi Win32 Windows Service应用程序,它在从服务控制面板安装和启动时运行良好.
现在我想为它编写一个配置应用程序,我想可能只需双击其可执行文件就可以成为自己的配置器.
我是这么认为的,因为当双击时,服务以某种方式区分它不是由服务控制管理系统执行的.
所以这是我的问题:
始终建议在的OnExecute事件处理程序中执行所有发送/接收任务TIdTCPServer,但我不理解以下内容:
如何等待输入的特定顺序,同时将一些数据发送到同一客户端?我不需要命令响应序列,但是我需要:
例如,如果我们正在等待CR-LF:
procedure TSocketServer._serverExecute(AContext: TIdContext);
var
msg: string;
begin
msg := AContext.Connection.IOHandler.ReadLn();
//Here we are only if CRLF was detected.
//How to send while we are waiting?
_log(msg);
end;
Run Code Online (Sandbox Code Playgroud) 有时我会从几个网站得到一些乱码回复.
这是我的代码:
Stream responseStream = response.GetResponseStream();
buffer = new Byte[256];//
int bytesRead;
while ((bytesRead = responseStream.Read(buffer, 0, buffer.Length)) > 0)
{
outStream.Write(buffer, 0, bytesRead);
//resp=resp+ .UTF8.GetString(buffer, 0, bytesRead);
resp=resp + Encoding.ASCII.GetString(buffer); //resp is string
}
Run Code Online (Sandbox Code Playgroud)
当我从www.google.co.in请求时,我在resp字符串中得到以下字符:
?\ B\0\0\0\0\0ερ}ÿ·F ?????????Ž?????? {7米??? OX吗?\ r?ÿ??? 33 ?? d; Y ???? N 0?
我该如何克服这个问题?它与编码有关吗?
delphi ×5
c# ×3
indy ×2
.net ×1
ado.net ×1
bindinglist ×1
blocking ×1
data-binding ×1
datagridview ×1
duplex ×1
routes ×1
ruby ×1
sockets ×1
tcpserver ×1
terminator ×1