Delphi常用操作
TList-结构-指针
pListData = ^TListData;
TListData = record
aID : Integer;
aStr : String;
aBool : Boolean;
end;
mmList := TList.Create;
for I := 0 to 2 do begin //添加
new(mmpListData);
mmpListData^.aID := I;
mmpListData^.aStr := '字符'+inttostr(I);
mmpListData^.aBool:= true;
mmList.Add(mmpListData);
end;
for I := 0 to mmList.Count - 1 do memInfo.Lines.Add(Format('%d %s',
[pListData(mmList[I])^.aID,pListData(mmList[I])^.aStr])); //显示
for I := 0 to mmList.Count - 1 do FreeMem(pListData(mmList.Items[I]), SizeOf(TListData)); //删除
mmList.Clear;
mmList.Free;
流操作
var
mmFS : TFileStream;
mmMS : TMemoryStream;
memInfo.Lines.Text := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
mmMS := TMemoryStream.Create;
memInfo.Lines.SaveToStream(mmMS);
mmMS.Position := 4; //指针位置(从0开始计数)
memInfo.Lines.LoadFromStream(mmMS); //ABCD没了
mmMS.Free;
mmFS := TFileStream.Create(gPath+'Img\Test1.bmp',fmOpenRead or fmShareExclusive);
Image1.Picture.Bitmap.LoadFromStream(mmFS);
mmFS.Free;
mmMS := TMemoryStream.Create;
Image1.Picture.Bitmap.SaveToStream(mmMS);
mmMS.SaveToFile(gPath+'Img\Test2.bmp');
mmMS.Free;
Read:将数据从流中读出 Write:将数据写入流中 Seek:流中读取指针的移动 Setsize:改变数据的大小
文件操作
fmCreate :用指定的文件名建立文件,如果文件已经存在则打开它。
fmOpenRead :以只读方式打开指定文件
fmOpenWrite :以只写方式打开指定文件
fmOpenReadWrite:以写写方式打开指定文件
fmShareCompat :共享模式与FCBs兼容
fmShareExclusive:不允许别的程序以任何方式打开该文件
fmShareDenyWrite:不允许别的程序以写方式打开该文件
fmShareDenyRead :不允许别的程序以读方式打开该文件
fmShareDenyNone :别的程序可以以任何方式打开该文件
键盘
Self.KeyPreview := true; //Form可以接收键盘操作
文件拖放
定义 OLD_panDropWndProc : TWndMethod;
处理过程 procedure DragFileProc(var Message: TMessage); //拖放文件的消息
初始化
DragAcceptFiles(panDrop.Handle, True); //使得panDrop控件接受文件拖放 Use ShellAPI
OLD_panDropWndProc := panDrop.WindowProc; //保存panDrop原来的 WindowProc
panDrop.WindowProc := DragFileProc; //设置新的 WindowProc,支持文件拖放
消息处理
var
FileNum: Word;
p: array[0..254] of char;
mmFName:String;
begin
if Message.Msg = WM_DropFiles then begin
FileNum := DragQueryFile(Message.WParam, $FFFFFFFF, nil, 0); // 取得拖放文件总数
for FileNum := 0 to FileNum - 1 do begin
DragQueryFile(Message.WParam, FileNum, p, 255); // 取得拖放文件名
mmFName := trim(StrPas(p));
//mmFName := StringReplace(mmFName,'\','\\',[rfReplaceAll]);
memInfo.Lines.Add(mmFName);
end;
end else OLD_panDropWndProc(Message); //其他消息,调用原来的处理程序
end;