郭宇翔的博客
Delphi
Delphi开发
使用Delphi开发新浪微博应用
十二 29th
最近在看一下Sina的SDK,对于Java和Python还有C都不会,于是找了一下比较熟悉的Delphi。结果居然看到这个基于Delphi 2010的Sina SDK包。
试用了一下,还不错,发上来和大家共享,还没有深入研究,上几张图,有空再看看有什么具体的功能和使用方法。
上图先:
Delphi调用Cmd并取得输出字符
三 20th
最近想做个调用CMD命令并取得结果的程序··找了一下··共享代码
procedure CheckResult(b: Boolean);
begin
if not b then
raise Exception.Create(SysErrorMessage(GetLastError));
end;
function RunDOS(const CommandLine: string): string;
var
HRead, HWrite: THandle;
StartInfo: TStartupInfo;
ProceInfo: TProcessInformation;
b: Boolean;
sa: TSecurityAttributes;
inS: THandleStream;
sRet: TStrings;
begin
Result := '';
FillChar(sa, sizeof(sa), 0);
//设置允许继承,否则在NT和2000下无法取得输出结果
sa.nLength := sizeof(sa);
sa.bInheritHandle := True;
sa.lpSecurityDescriptor := nil;
b := CreatePipe(HRead, HWrite, @sa, 0);
CheckResult(b);
FillChar(StartInfo, SizeOf(StartInfo), 0);
StartInfo.cb := SizeOf(StartInfo);
StartInfo.wShowWindow := SW_HIDE;
//使用指定的句柄作为标准输入输出的文件句柄,使用指定的显示方式
StartInfo.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
StartInfo.hStdError := HWrite;
StartInfo.hStdInput := GetStdHandle(STD_INPUT_HANDLE); //HRead;
StartInfo.hStdOutput := HWrite;
b := CreateProcess(nil, //lpApplicationName: PChar
PChar(CommandLine), //lpCommandLine: PChar
nil, //lpProcessAttributes: PSecurityAttributes
nil, //lpThreadAttributes: PSecurityAttributes
True, //bInheritHandles: BOOL
CREATE_NEW_CONSOLE,
nil,
nil,
StartInfo,
ProceInfo);
CheckResult(b);
WaitForSingleObject(ProceInfo.hProcess, INFINITE);
inS := THandleStream.Create(HRead);
if inS.Size > 0 then
begin
sRet := TStringList.Create;
sRet.LoadFromStream(inS);
Result := sRet.Text;
sRet.Free;
end;
inS.Free;
CloseHandle(HRead);
CloseHandle(HWrite);
end;
使用方法也很简单···就是调用Function;
Delphi格式’%s’无效或不匹配解决方法
三 15th
DElphi7在打开 Project-options (工程-选项) 时弹出”格式’%s’ 无效或不匹配”。研究了很久,终于知道是怎么回事,解决方法共享一下,事实上很简单~~
在“我的电脑”->右键“属性”->“高级”->“性能”->“设置”->“数据执行保护”
选择“只为关键Windows程序和服务启动数据执行保护”,然后重启电脑就OK了
Delphi实现背景音乐播放
十二 4th
最近在做个抽奖程序,想加入抽奖声音,本来打算使用了TMediaPlayer控件来播放音乐。最后发现可以直接使用WINDOWS为我们提供的API函数来播放音乐,方法如下:首先需要在uses部分加入mmsystem,接着写入下列语句,其中e:\1.mid为播放的文件,NN为自定义名称标志。
procedure TForm1.Button1Click(Sender: TObject); begin //播放音乐 MCISendString(OPEN e: \1.MID type SEQUENCER ALIAS NN, , 0, 0); MCISendString(PLAY NN FROM 0, , 0, 0); MCISendString(CLOSE ANIMATION, , 0, 0); end; procedure TForm1.Button2Click(Sender: TObject); begin //停止播放 MCISendString(OPEN e: \1.MID type SEQUENCER ALIAS NN, , 0, 0); MCISendString(STOP NN, , 0, 0); MCISendString(CLOSE ANIMATION, , 0, 0); end;
Delphi操作ini配置文件
十 5th
最近在做的IP设置程序~因为有些东西要保存成常量~但是又可能需要进行一些改动~所以就想到了保存到INI配置文件的办法~
找了一下教程~还是继续分享~
一、有必要了解INI文件的结构:
;注释
[小节名]
关键字=值
…
—- INI文件允许有多个小节,每个小节又允许有多个关键字, “=”后面是该关键字的值。
—- 值的类型有三种:字符串、整型数值和布尔值。其中字符串存贮在INI文件中时没有引号,布尔真值用1表示,布尔假值用0表示。
—- 注释以分号“;”开头。
Delphi获取Access中的表名
十 3rd
因为开始做IP设置程序~把每一栋楼划分为一个表~也就在一开始的时候要历遍数据库中的所有表来获得下拉菜单的选项,找了一些资料,结果如下:
//声明变量: lString,lTableName:TStrings; //-----------获取表名信息------------- lString:=TStringList.Create; lTableName:=TStringList.Create; DM_Conn.con_Access.GetTableNames(lString,True); for i:=0 to lString.Count-1 do begin if (lString.Strings[i]<>'MSysACEs') and (lString.Strings[i]<>'MSysObjects') and (lString.Strings[i]<>'MSysQueries') and (lString.Strings[i]<>'MSysRelationships') then lTableName.Add(lString.Strings[i]); end; 我最终使用的代码如下: procedure TForm1.FormCreate(Sender: TObject); var //声明变量: lString:TStrings; i:Integer; Begin //-----------获取表名信息------------- lString:=TStringList.Create; form1.ADOConnection1.GetTableNames(lString,True); for i:=0 to lString.Count-1 do begin if (lString.Strings[i]<>'MSysACEs') and (lString.Strings[i]<>'MSysObjects') and (lString.Strings[i]<>'MSysQueries') and (lString.Strings[i]<>'MSysRelationships') then form1.combobox1.Items.Add(lString.Strings[i]); End; button2.Enabled:=false; end; procedure TForm1.FormCreate(Sender: TObject); var//声明变量: lString:TStrings; i:Integer; Begin //-----------获取表名信息-------------lString:=TStringList.Create; form1.ADOConnection1.GetTableNames(lString,True); for i:=0 to lString.Count-1 dobeginif (lString.Strings[i]<>'MSysACEs')and (lString.Strings[i]<>'MSysObjects')and (lString.Strings[i]<>'MSysQueries')and (lString.Strings[i]<>'MSysRelationships') thenform1.combobox1.Items.Add(lString.Strings[i]); End; button2.Enabled:=false; end;

最新评论