我在TStringList类中使用分隔符时遇到问题.看一看:
var
s: string;
sl: TStringList;
begin
sl := TStringList.Create;
s := 'Users^foo bar^bar foo^foobar^barfoo';
sl.Delimiter := '^';
sl.DelimitedText := s;
ShowMessage(sl[1]);
end;
Run Code Online (Sandbox Code Playgroud)
sl[1] 应该回来 'foo bar'
sl[1] 回来了 'foo'
看来分隔符现在是'^'AND' '
有任何想法吗?
在德尔福:
如何获得指针指向的地址(0x2384293)?
var iValue := Integer;
iptrValue := PInteger;
implementation
procedure TForm1.Button1Click(Sender: TObject);
begin
iptrValue := @iValue;
iValue := 32342;
//Should return the same value:
Edit1.Text := GetAddressOf(iptrValue);
Edit2.Text := GetAddressOf(iValue);
Run Code Online (Sandbox Code Playgroud)
那么现实中的GetAddress是什么:)
关于delphi的其他任何文档都不是集成的帮助.
类似于http://java.sun.com/j2se/1.5.0/docs/api/或http://msdn.microsoft.com/en-us/library/
......仅限德尔福.
因为恕我直言Delphi帮助是坏蛋坏.
目前是否有一项功能允许在SVN中进行独占结账?
是否有一个很好的Delphi插件允许通过IDE访问?
这是一个执行以下操作的函数:
- 创建一个长度为8的随机令牌
- 将Token插入数据库
如果用户已有令牌,请更新它.
如果用户没有令牌,请插入它.
procedure createToken(BenuNr: integer);
var
AQ_Query: TADOQuery;
strToken: string;
intZaehler: integer;
const cCharSet: string = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
begin
//Random String as Token
SetLength(strToken, 8);
for intZaehler := 1 to 8 do
begin
strToken[intZaehler] := cCharSet[1+Random(Length(cCharSet))];
end;
//Inserts the Token into the Database
with AQ_Query do
begin
try
AQ_Query := TADOQuery.Create(nil);
ConnectionString := strConnectionString;
SQL.Text := 'if EXISTS(select * from TOKN where BENU_NR = :paramBenu_NR) begin update TOKN set TOKEN = :paramTOKEN where BENU_NR = :paramBenu_NR end else …Run Code Online (Sandbox Code Playgroud) 你好.
我正在编写一个用于网络使用的tier2订购软件.所以我们有客户端和服务器.
在客户端,我创建了TBest的对象,其中保存了产品ID,订购金额和用户.(所以这是一个订单的项目).
订单可以包含多个项目,并将这些项目保存在一个数组中,以便稍后将创建的订单发送到服务器.包含该数组的类称为TBestellung.
所以我创造了两个
TBest.toString: string;
Run Code Online (Sandbox Code Playgroud)
和
TBest.fromString(source: string): TBest;
Run Code Online (Sandbox Code Playgroud)
现在,我通过套接字将toString结果发送到服务器,并在服务器上使用fromString创建对象(它解析收到的属性).这按预期工作.
问题:有更好,更优雅的方式吗?序列化是一个关键字,是的,但序列化一个包含其他对象数组(在本例中为TBest)的对象(在本例中为TBestellung)时,并不是那么可怕/困难吗?
//小修正案:在被问到之前.是的我应该为toString和fromString创建一个额外的(静态)类,否则服务器需要创建一个"空"TBest才能使用fromString.
我有这个功能来确定用户是否存在于数据库中的天气
DM是我的DataModule
AQ_LOGIN是一个ADOQuery
BENU是我的桌子,里面装满了用户和他们的密码
代码如下:
function UserCheckExist(Login, pw: string): boolean;
begin
with DM do
begin
AQ_LOGIN.Close;
AQ_LOGIN.SQL.Clear;
AQ_LOGIN.SQL.Add('select BLOGIN from BENU where BLOGIN = ''Login'' AND BPW = ''pw''');
AQ_LOGIN.Open;
end;
end;
Run Code Online (Sandbox Code Playgroud)
我现在的问题是:如何使该功能返回true或false天气具有相应密码的用户存在?
提前致谢.
有没有办法在大于255个字符的记录中获取字符串?
编辑:
我有以下内容:
TQuery = Record
Action: string[255];
Data: string;
end;
Run Code Online (Sandbox Code Playgroud)
如果我现在说:
Test: TQuery;
Test.Data := 'ABCDEFGHIJKLMN...up to 255...AISDJIOAS'; //Shall be 255 chars
Run Code Online (Sandbox Code Playgroud)
它不起作用,编译器抱怨......如何解决?
客户:
//is called when the client tries to log in
procedure TLogin_Form.btnLoginClick(Sender: TObject);
var LoginQuery: TQuery;
begin
//If socket not open, open it
if not LoginSocket.Active then
begin
LoginSocket.Open;
end;
//create package
LoginQuery.Login := ledtName.Text;
LoginQuery.Passwort := ledtPasswort.Text;
LoginQuery.IP := LoginSocket.Socket.LocalAddress;
//send package
LoginSocket.Socket.SendBuf(LoginQuery, SizeOf(LoginQuery));
end;
Run Code Online (Sandbox Code Playgroud)
服务器:
//This procedure is executed when I click on start server button
procedure TServer_Form.btnStartStopClick(Sender: TObject);
begin
//If not open, open it
if not ServerSocket.Active then
begin
btnStartStop.Caption := 'stop server';
//Open ServerSocket
ServerSocket.Open;
end …Run Code Online (Sandbox Code Playgroud) var Buffer: TMemoryStream
Run Code Online (Sandbox Code Playgroud)
代码:
Move((PByte(Buffer.Memory)+Buffer.Position)^, Buffer.Memory^, Buffer.Size - Buffer.Position);
Run Code Online (Sandbox Code Playgroud)
遗憾的是,这是不可能的:运算符不适用于此类操作数.
那么我怎样才能获得MemoryBuffer的起点?
import java.lang.Math;
public class NewtonIteration {
public static void main(String[] args) {
System.out.print(rootNofX(2,9));
}
// computes x^n
public static double power(double x, int n) {
if (n==0) {
return 1;
}
double Ergebnis = 1;
for (int i=0; i<=Math.abs(n)-1; i++) {
Ergebnis *= x;
}
if (n<0) {
Ergebnis = 1/Ergebnis;
}
return Ergebnis;
}
// computes x^(1/n)
public static double rootNofX(int n, double x) {
return power(x, 1/n);
}
}
Run Code Online (Sandbox Code Playgroud)
无论何时调用power(x,1/n),n都会重置为0.但是,对于rootNofX赋值为2的na参数是不是?
处理以下代码行时,我收到语法错误.特别是在AQ_Query.Open上;
procedure THauptfenster.Button1Click(Sender: TObject);
var
option: TZahlerArray;
begin
option := werZahlte;
AQ_Query.Close;
AQ_Query.SQL.Clear;
AQ_Query.SQL.Add('USE wgwgwg;');
AQ_Query.SQL.Add('INSERT INTO abrechnung ');
AQ_Query.SQL.Add('(`datum`, `titel`, `betrag`, `waldemar`, `jonas`, `ali`, `ben`)');
AQ_Query.SQL.Add(' VALUES ');
AQ_Query.SQL.Add('(:datum, :essen, :betrag, :waldemar, :jonas, :ali, :ben);');
AQ_Query.Parameters.ParamByName('datum').Value := DateToStr(mcDatum.Date);
AQ_Query.Parameters.ParamByName('essen').Value := ledTitel.Text;
AQ_Query.Parameters.ParamByName('betrag').Value := ledPreis.Text;
AQ_Query.Parameters.ParamByName('waldemar').Value := option[0];
AQ_Query.Parameters.ParamByName('jonas').Value := option[1];
AQ_Query.Parameters.ParamByName('ali').Value := option[2];
AQ_Query.Parameters.ParamByName('ben').Value := option[3];
AQ_Query.Open;
end;
Run Code Online (Sandbox Code Playgroud)
错误:

我正在使用MySQL Delphi 2010.