我想用D写一个程序,这个程序不涉及数据库
我想实现:给一个窗口输入一些信息,然后关掉程序,再次打开时,刚才输入的信息还在。怎么样实现?
谢谢各位大虾帮忙(最好有个简单的例子)
-------------------
我的想法是:先把一个可执行文件和一个文本文件(.txt)用流的方法组合在一起。这样执行可执行文件来对文本文件读写,
文本文件专门有来保存输入的信息。
高手们,谢谢了。
我想实现:给一个窗口输入一些信息,然后关掉程序,再次打开时,刚才输入的信息还在。怎么样实现?
谢谢各位大虾帮忙(最好有个简单的例子)
-------------------
我的想法是:先把一个可执行文件和一个文本文件(.txt)用流的方法组合在一起。这样执行可执行文件来对文本文件读写,
文本文件专门有来保存输入的信息。
高手们,谢谢了。
解决方案 »
- makework的疑惑
- 如何将身份证(二代)上的信息,转换成文本的要有代码
- 关于dbgrid的问题
- 求delphi中SQL语句带参数的Like写法
- 如何判断该帐号是否登陆(继续加分,我就不信了,若大个CSDN,就没人能解决)?
- 用RECORDSET好还是CONNECTION好?
- 有没有最新的比较经典的delphi书,给小弟介绍一下好吗谢谢
- 为什么DBGrid中加入Lookup字段就不能插入记录。。。。。。。。
- 给新年第一个回贴人(幸运儿)的200分(Delphi版)
- 安装组件的时候出现这错误请问原因,Error] button1.pas(1): Unit identifier 'SymbolChecker' does not match
- 100分求 SYRIS 控制器通讯协议(SY210NT)
- 一个调用Dll子窗体如何释放的问题!
uses inifiles; constructor Create(const FileName: string);
function SectionExists(const Section: string): Boolean;
function ReadString(const Section, Ident, Default: string): string; virtual; abstract;
procedure WriteString(const Section, Ident, Value: String); virtual; abstract;
function ReadInteger(const Section, Ident: string; Default: Longint): Longint; virtual;
procedure WriteInteger(const Section, Ident: string; Value: Longint); virtual;
function ReadBool(const Section, Ident: string; Default: Boolean): Boolean; virtual;
procedure WriteBool(const Section, Ident: string; Value: Boolean); virtual;
function ReadBinaryStream(const Section, Name: string; Value: TStream): Integer; virtual;
function ReadDate(const Section, Name: string; Default: TDateTime): TDateTime; virtual;
function ReadDateTime(const Section, Name: string; Default: TDateTime): TDateTime; virtual;
function ReadFloat(const Section, Name: string; Default: Double): Double; virtual;
function ReadTime(const Section, Name: string; Default: TDateTime): TDateTime; virtual;
procedure WriteBinaryStream(const Section, Name: string; Value: TStream); virtual;
procedure WriteDate(const Section, Name: string; Value: TDateTime); virtual;
procedure WriteDateTime(const Section, Name: string; Value: TDateTime); virtual;
procedure WriteFloat(const Section, Name: string; Value: Double); virtual;
procedure WriteTime(const Section, Name: string; Value: TDateTime); virtual;
procedure ReadSection(const Section: string; Strings: TStrings); virtual; abstract;
procedure ReadSections(Strings: TStrings); virtual; abstract;
procedure ReadSectionValues(const Section: string; Strings: TStrings); virtual; abstract;
procedure EraseSection(const Section: string); virtual; abstract;
procedure DeleteKey(const Section, Ident: String); virtual; abstract;
procedure UpdateFile; virtual; abstract;
function ValueExists(const Section, Ident: string): Boolean;
property FileName: string read FFileName;
我是想使用时只用一个可执行文件就可以了,这个可执行文件是包含两个文件的:读写文本的程序文件和存放内容的文件。
procedure TForm1.btn2Click(Sender: TObject);
var
i:Integer;
begin
with TFileStream.Create('c:\derek.dat',fmcreate or fmOpenWrite) do
begin
try
for i:=0 to Screen.FormCount-1 do
begin
if Screen.Forms[i]<>Self then
WriteComponent(Screen.Forms[i]);
end;
finally
Free;
end;
end;
end;procedure TForm1.btn3Click(Sender: TObject);
begin with TFileStream.Create('c:\derek.dat',fmOpenread) do
begin
try
while Position<Size do
begin
Form2:=TForm2.CreateNew(nil);
Form2.ParentWindow:=HWND_DESKTOP;
ReadComponent(Form2);
end;
finally
Free;
end;
end;
end;
var AppIni: TIniFile;
begin
try
AppIni := TIniFile.Create(ExtractFilePath(application.ExeName)+'\ID.ini');
id:=appini.ReadString('id','user','');
password:=appini.ReadString('id','password',''); finally
AppIni.Free;
end;end;
不好意思了
比如我现在用D 写了一个小程序,运行时在上面输入一个信息:吴东 26 深圳
我把这个可执行文件拷给 brightyang 兄,他打开也可以看到这个信息。同时他可以增加一个信息:www 25 北京
再把这个文件拷给 myderek 兄,操作同上
嘿嘿。不知道明白不
能不能把这个INI文件编译进去,这样只拷一个文件(可执行文件)就可以了。
在窗体里放一个Memo1控件.uses SysUtils;
在窗体启动时写代码:
procedure TForm1.FormCreate(Sender: TObject);
begin
if FileExists(ExtractFilePath(Application.ExeName)+'login.ini') then
memo1.Lines.LoadFromFile(ExtractFilePath(Application.ExeName)+'你的文件名.txt');
end;//关闭时写代码
procedure TFrmOrderform.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
memo1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'你的文件名.txt'');
end;
在窗体里放一个Memo1控件.uses SysUtils;
在窗体启动时写代码:
procedure TForm1.FormCreate(Sender: TObject);
begin
if FileExists(ExtractFilePath(Application.ExeName)+ "你的文件名.txt") then
memo1.Lines.LoadFromFile(ExtractFilePath(Application.ExeName)+ "你的文件名.txt ");
end; //关闭时写代码
procedure TFrmOrderform.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
memo1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+ "你的文件名.txt " ");
end;
str:stringlist:
{$R *dfm}
procedure Tform1.formclose(sender:object);
begin
str.Creat;
str:=memo1.text;
str.free;//不过这里还是要释放,不知能不能将数据保留住
end;procedure Tform1.formclose(sender:object);
begin
str.create;
memo1.text:=str;
str.free;
end;
var
str:stringlist:
{$R *dfm}
procedure Tform1.formclose(sender:object);
begin
str.Creat;
str:=memo1.text;
str.free;//不过这里还是要释放,不知能不能将数据保留住
end; procedure Tform1.formshow(sender:tobject);
begin
str.create;
memo1.text:=str;
str.free;
end;
我倒是想到一方法,不知道可行不。找一个可以保存用户输入信息的控件,然后再把这个控件放到窗体里。这样只要程序去行,怎样操作都行,不过不知道有这样的控吗。没有的话就只有自己做了。在程序对这个控件输入的过程,改写它的属性。这只是思路不知道能否实现.