21. 11.

  做一个多文档编辑器,在主窗口中添加ControlBar组件,ActionManager组件,和ActionMainMenuBar组件,还要再向其中添加一个MainMenu组件,不知道怎么把选单放到ControlBar组件中,还有ActionManager组件怎么和以上的组件相互联系啊,整了好久不知道怎么弄!
麻烦大哥大姐们帮帮忙吧!!!!小弟在此先谢过了!!!


21. 11.

在网上搜了好多都是用ado连的
搜到一个是用BDE的(http://topic.csdn.net/t/20020311/17/568838.html),
感觉还不如我自己直接在查询条件中加个排序条件
请问有没有,数据集已经打开,无需在二次执行sql语句的方式来解决这个问题,
有没有类似ADO的相对容易或者至少速度快点的排序方法

请看清楚再回答啊,谢谢!!!

动态创建索引啊.


21. 11.

寻求帮助,很急,关于delphi如何在本地访问anychart flash的问题,请知道的不吝赐教
  我在网上下了几个anychart的swf文件和相对应需要访问的xml文件,在本地用delphi7写程序希望可以把它显示出来。在程序中用了TShockwaveFlash控件,但是一直都不行,我播放其他的swf文件很正常,包括fusioncharts都可以正常在我的程序里播放
  请各位高手指点下

是有试用版的水印,但是一直没有数据,我的估计是swf内部对修改了与xml关联的接口,在delphi里用控件的setvariable方法一直找不到正确的参数

http://www.anychart.com/products/anychart/docs/users-guide/index.html?interactivity.html
看看这个,应该能帮到你。


20. 11.

说句心理话在论坛里学了不少的知识
也曾经和老于争过分 其实老于人也挺不错的
谢谢僵哥,谢谢hongqi162,谢谢lack,谢谢老于
也谢谢曾经帮助过我的人
再见了CSDN

为什么要走?有必要吗?

我2003年左右离开的,现在又回来了,呵呵

干嘛去了呀

不管干什么去!和离开不离开CSDN有关系吗?

为什么要离开呢!
就算离开编程这个行业,也可以留在这里聊聊天,帮帮人嘛!

有聚终有散,记得常回来看看。

一路好走,金融危机带来了经济危机

一下勾引出好多猩猩

送别楼主,顺便接分!

永远祝福帮助过我的人

呵呵,常回来看看,走一个就少一个了。。。

有空来玩

有空来看。呵呵

怎么就走了呢?

没事来灌灌水,散散分

祝福LZ!

引用 3 楼 outer2000 的回复:
我2003年左右离开的,现在又回来了,呵呵

流星老大最近可好,怎么QQ被盗了么?不见上QQ啊

引用楼主 fangsp 的帖子:
说句心理话在论坛里学了不少的知识
也曾经和老于争过分 其实老于人也挺不错的
谢谢僵哥,谢谢hongqi162,谢谢lack,谢谢老于
也谢谢曾经帮助过我的人
再见了CSDN

csdn论坛里面的人就是这样,见怪不怪的,何必这么在乎别人说的。

谢谢版主

jf

哎~~~

天天给人顶贴是浪费时间,好好学习多赚点钱跟实际

踏过草地,留下足迹。
we are waiting for you in csdn.

引用 22 楼 zhuminghua 的回复:
天天给人顶贴是浪费时间,好好学习多赚点钱跟实际

热爱技术就成,星星不一定就是权威

弄到星星不容易,楼主走好(ps:人走了能不能把分倒给我,嘿嘿)

我要倒分到星星,好开坛押宝

为什么走?

我所尊重的万一老师还穿着一条小绿三角裤头呢,

你去他的博客看看,帮了不少新人

没啥说的了,祝lz多多发财吧

非常赞同楼主说法!

delphi10000
万一
等级:
可用分等级:贫农
总技术分:37
总技术分排名:143140

有来有回
呵呵

引用 27 楼 mygodsos 的回复:
我所尊重的万一老师还穿着一条小绿三角裤头呢,

你去他的博客看看,帮了不少新人


万一老师,我从他博客学了不少

浮躁的人都喜欢玩这招。

jf

任何时候都不要拿别人的错误来惩罚自己

既然走的发帖了,为什么不给大家一个理由呢,LZ竟然也玩悬念啊

常回家看看……


20. 11.

delphi2009版怎么什么都不同了啊:也不知道又是不是支持什么Unicode搞的原因
在原来版本中用BinToHex函数这样写:
var
i:Integer;
s:PChar;
d:array[0..20] of Char;
p:string;
begin
s:='sdfsda';
d:='';
BinToHex(s,@d,Length(s));
for I := 0 to 20 do
  begin
    p:=p+d[i];
  end;

end;
完全正确啊,没有一点错误,但是在delphi2009中就不可以,错误到
BinToHex(s,@d,Length(s));
提示:
[DCC 错误] Unit1.pas(37): E2251 Ambiguous overloaded call to 'BinToHex'
  Classes.pas(9272): Related method: procedure BinToHex(Pointer; PWideChar; Integer);
  Classes.pas(9277): Related method: procedure BinToHex(Pointer; PAnsiChar; Integer);

郁闷啊,看不懂,请各位高手帮下忙,解释下怎么回事啊~!

不是的啊,不是这个原因,谢谢你的回答,我调过来也没有用,不是类型的问题,我估计还是Unicode的问题吧,那个高手回答下啊

BinToHex(s,PWideChar(@d[0]),Length(s));

谢谢了


20. 11.

看书上说文件分为文本文件,类型文件(纪录文件),无类型文件(二进制文件);

现在我有1个exe程序,但是我想把他的ini配置文件写到exe文件的尾部,

通过分割二进制文件,分割出配置文件:

看网上说函数filewrite,fileread,blockwrite,blockread,都可以对该类型的文件进行操作,我是这样定义的:
var
x,x1:Integer;
y,y2:string;
begin
x:=FileOpen('1.wma',fmOpenReadWrite);
if x>0 then
begin
  x1:=FileSeek(x,0,2);
  FileSeek(x,0,0);
  y:=StringOfChar(#0,x1);
  FileRead(x,y[1],x1);
  FileClose(x);
  x:=FileOpen('2.wma',fmOpenReadWrite);
  if x>0 then
  begin
    y2:='|–|'+y[1];
    FileWrite(x,y1,x1);
    FileClose(x);
  end;
end;
end;

但是我再用string类型数据取出这段二进制码,查找不到我定义的'|–|'字符,请各位大虾帮忙~!,书上说存取二进制数据是不分数据类型的啊!为什么不可以???

建议不这么做
效率太低了

引用 1 楼 laorer 的回复:
你这种做法不是很好,会被杀毒软件认为是病毒的

你知道应该怎么作吗?老大

巨汗!!!

里面写的是二进制的,但用文件打开的是十六进制的,你写入的是ASCII码的,这个…….

你最好是打开一个文件,然后,把ASCII码转成十六进制.

我只想知道为什么我写入的字符|–|找不到,是不是应该先把他写成二进制格式再放入,还是???

引用 4 楼 nbzip 的回复:
巨汗!!!

里面写的是二进制的,但用文件打开的是十六进制的,你写入的是ASCII码的,这个…….

你最好是打开一个文件,然后,把ASCII码转成十六进制.

你的意思是说用FileOpen打开文件,用FileRead读入的是16进制的数据,我应该先把|-|转换为16进制的,然后写入就没有问题了??是不是老大

做个记号
FileRead(x,y[1],x1);
y又不是数组,这样取值对吗?

引用 7 楼 zhangxiaommmm 的回复:
做个记号
FileRead(x,y[1],x1);
y又不是数组,这样取值对吗?

其实我对文件操作也不是很了解,具体为什么要这样取出数据,我也说不上来,反正上面的代码要想完全取出整个文件的内容就必须这样写,否则编译器也会报错,具体,不知道,

                              ———请各位老大回答正题啊,給个例子把,谢谢了

。。。。。。。。。。现在这么多人对计算机内部数据什么类型什么格式不了解??????都是程序员吗?还是学生?

唉。。。。。。。。。。。。。。。

计算机内部数据不分十进制,十六进制的,它只以二进制形式存起来,显示的时候才会有进制问题。

字符及字符串存进去取出来,有进制问题????????

唉,我自己测试出来了,什么进制转换,都不用,直接用filewrite写进去就是了,我用UltraEdit-32看到我的程序后面有我写的内容了~!……….结帖郁闷,本来问问题的,不来回答都说写不着边的问题,郁闷的要紧~!

引用 4 楼 nbzip 的回复:
巨汗!!!

里面写的是二进制的,但用文件打开的是十六进制的,你写入的是ASCII码的,这个…….

你最好是打开一个文件,然后,把ASCII码转成十六进制.


不知所云。

引用 10 楼 smabl1234 的回复:
唉,我自己测试出来了,什么进制转换,都不用,直接用filewrite写进去就是了,我用UltraEdit-32看到我的程序后面有我写的内容了~!……….结帖郁闷,本来问问题的,不来回答都说写不着边的问题,郁闷的要紧~!

个人的建议是,如果是按这种方式去操作,最好在文件的末尾,比如用四个字节做一个特殊的标记,再往前的位置存储配置文件的长度,然后再往前放文件的内容。
读取时,先从末尾读取标记,如果读取文件的末尾的标记正常,则,继续往前读长度,之后再根据长度往前读文件数据。

类似的东西,比较典型的用例,就是早期版本的可以自播放的Flash(exe程序自己播放程序末尾的Flash文件).


20. 11.

为什么有时候会出现这样的问题啊?

errors in source code
源代码中有错误
看看刚输入的代码和前面一点的代码有没有错误。
例如变量名字打错了,没加分好引号。

现在已经解决了,但是还是感觉delphi好奇怪,挺麻烦。没有c#那么的方便。哎!可能是我对它的了解不够深吧。以后要加强。

熟悉就好了,我刚开始的时候也是很多地方看不明白,出个错误就得找半天

前面的代码有错误,就会这样的。多习惯就好,各种开发工具的提示都不太一样。呵呵


20. 11.

同题,cxgrid已经开multiselect为真,但是在选择以后gt.DataController.GetSelectedCount返回总是=0;

代码如下:
for I:=0 to gt.DataController.GetSelectedCount - 1 do
  begin           
      gt.DataController.GetSelectedRowIndex(I);
      ShowMessage(VarToStr(gt.DataController.GetValue(J,0))); //选择中行的第列的值
end;


20. 11.

procedure TForm1.Button1Click(Sender: TObject);
begin
with mydata.Query1 do
begin
close;
with sql do
begin
clear;
add('select * from Student where 姓名=:name');
ParamByName('name').AsString:=trim(Edit1.Text);
end;
if(mydata.Query1.FindLast) then
begin
open;
end
else
begin
showmessage('该姓名不存在,请重新输入');
end;
end;
end;

end.

if(mydata.Query1.FindLast) then
begin
open;
end

这句有问题,在没有打开查询呢,怎么会findlast呢,也就是说你的查询语句永远没有执行。
楼上的正确,看看吧

传参后,没有把结果集Open,FindLast也就没有意义了

Open

open…………

来晚了~~
OPEN`~~

先OPEN再FindLast,顺便说一下,楼主把代码复杂化了,这个功能很简单的几句就可以搞定,别给自己找麻烦.

引用 1 楼 ditouhu 的回复:
with  query1 do
begin
close;
sql.clear;
sql.text:='select * from Student where 姓名=:name';
Parameters.ParamByName('name').value:=trim(Edit1.Text);
open;
end;

if queyr1.reocrdcount <1 then
showmessage('该姓名不存在,请重新输入');


顶!


20. 11.

是这样的,我们的机器上有单片机,配置了IP地址,里面有一个serversocket,我用clientsocket发送一段二进制数据过去,它就会回传一些二进制的数据。。。例如我发送 00111 过去,服务器端就回复 11111
问题:
一:我该如何用clientsocket去发送这些二进制的数据给serversocket呢?是用clientsocket1.socket.sendstream()吗?

如果是用sendstream()的话,该怎么去表达这00111的二进制数据呢(别人说用 move)?又怎么去接收这二进制的数据回来呢?
二:我接到的二进制数据 00111,我该如何将它变为字符串,然后showmessage()出来,显示的还是 00111呢?(别人说还是用move)

[color=#FF0000]比较急,我找了几天的资料了,没一点头绪,因为我是做ERP数据库类型的软件的,第一次做这种通讯类的软件..完全不会,工程部那又天天催,我都快烦死了…在这里谢谢大家了..[/color]

楼上的朋友,我不是专门写代码的,主要是做ERP企业流程计设方面的,如果朋友们有空的话,希望能够帮帮我…谢谢!!!

clientsocket1.socket.sendbuffer就行了.
至于二进制,就看你怎么组织了.
现在一般的协议,都是用结构来组织的.

楼上的朋友能不能请举个例子说明?我现在是完全不搞不懂呀…
例如说,你能不能做一个 Clientsocket和serversokcet的demo,互相发送和接收二进制的数据,然后显示在一个memo内.?(哈哈,不要互发字符串喔,发字符串我还是会的).
再次谢谢哈!!!!!!!

00111 对应的是 7
var
str:string;
begin
  str := #7;//然后发送这个字符串出去就行了 
end.

引用 2 楼 andrewleeyou 的回复:
楼上的朋友,我不是专门写代码的,主要是做ERP企业流程计设方面的,如果朋友们有空的话,希望能够帮帮我…谢谢!!!

那就把工作交给程序员吧.

或者参考下面贴6楼的回复
http://topic.csdn.net/u/20081114/11/091305bd-24cf-4c5c-9083-3993e4d98eae.html

比如你要发一段二进制数: AA 3F 4E 5F

var
  arrBuf: array[0..3] of Byte;
begin
  arrBuf[0] := $AA;
  arrBuf[1] := $3F;
  arrBuf[2] := $4E;
  arrBuf[3] := $5F;

  ClientSocket1.Socket.SendBuffer(arrBuf, SizeOf(arrBuf));
end;

再或者复杂点的,
比如,自定义协议:
  协议头      命令号(1个byte)      命令参数1(2个byte)  数据区长度(4Byte)    数据区内容
  AA        01                  0103              6                  'abcdef'

type
  TCommData = record
    CommHead  : Byte;
    CommID    : Byte;
    CommParam : Word;
    DataLen  : DWORD;
    Data      : array[0..65535] of Char;
  end;

var
  CD: TCommData;
  strData: string;
begin
  strData = 'abcdef';
  CD.CommHead  := $AA;
  CD.CommID    := $01;
  CD.CommParam := &0103;
  CD.DataLen  := 6;
  StrPCopy(CD.Data, strData);

  ClientSocket1.Socket.SendBuffer(CD, SizeOf(TCommData));
end;

哈哈,谢谢楼上的朋友们…..
我在这里找相关贴子,老半天没有找到你发的那张贴,原来直接把标题写成了sendbuffer….
我明天去公司试试哈…..
===========

那就把工作交给程序员吧.
===
回复:我是个死要面子,又要强的人,我答应了人家技术部帮他们搞定…..唉呀..anyway,死要面子活受罪.

To 7楼,SendBuffer需要处理返回值.

问题一虽然还没测试,但我想应该没有问题了…
那第二个问题呢?

二:我接到的二进制数据 00111,我该如何将它变为字符串,然后showmessage()出来,显示的还是 00111呢?

顶…没人帮我解决了吗?

我测试过了….

客户端发送到serverclient后,就算serverclient的onclientread内没有任何代码,都会出错…
出错内容为:  "一把红叉 '?"  这样子….是怎么回事呢?