⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 87.txt

📁 该源码程序使用DELPHI连接EXCEL数据表并查询生成新的表单及一些EXCEL调用函数
💻 TXT
📖 第 1 页 / 共 2 页
字号:
在软件启动时设置AdoConnection控件的connectionstring   :procedure   TMainForm.FormCreate(Sender:   TObject);   
  var   
  S:String;   
  begin   
  with   ADOConnection   do   
  Begin   
  Connected:=false;   
  S:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";User   ID=Admin;Data   Source="'+ExtractFilePath(Application.ExeName);//这是路径   
  S:=S+'Student.mdb";Mode=Share   Deny   None;Extended   Properties="";';   
  S:=S+'Jet   OLEDB:System   database="";Jet   OLEDB:Registry   Path="";Jet   OLEDB:Database   Password="";Jet   OLEDB:Engine   Type=5;';   
  S:=S+'Jet   OLEDB:Database   Locking   Mode=1;Jet   OLEDB:Global   Partial   Bulk   Ops=2;Jet   OLEDB:Global   Bulk   Transactions=1;';   
  S:=S+'Jet   OLEDB:New   Database   Password="";Jet   OLEDB:Create   System   Database=False;Jet   OLEDB:Encrypt   Database=False;Jet   OLEDB:Don''t   Copy   Locale   on   Compact=False;Jet   OLEDB:Compact   Without   Replica   Repair=False;Jet   OLEDB:SFP=False';   
  ConnectionString:=S;   
    
  Connected:=true;   
  End;   
  ADODataSet.Active:=true;   
  end;

*******************************************************************************************

我算是犀利糊涂完成了,谢谢各位帮助,我把最后的原代码写在这里,也许用的着:   
  function   setdblocation(数据库名,计算机名):boolean   
  begin   
  vConn:AdoInt._Connection;   
  szConnect:='Provider=SQLOLEDB.1;Persist   Security   Info=False;';   
          szConnect:=szConnect+'Password='''';User   ID=sa;database=数据库名;';   
          szConnect:=szConnect+'Data   Source='''+计算机名+'''';   
  vConn:=CreateComobject(CLASS_Connection)as   ADOInt._Connection;   
          try   
                  vConn.Open(szConnect,'sa','',adOptionUnspecified);   
  except   
                  失败   返回;   
                  exit;   
          end;   
  成功返回;   
  end;   
  

**************************************************************************************************


Delphi中怎样将字符串按给定字符分隔(类似split函数的功能)
该文章转载自网络大本营:http://xrss.cn/Dev/Delphi/200751613291.Html
今天偶尔要做的Delphi程序,其中涉及到了字符串处理,里面有一个功能类似于VB里的split()函数的功能,于是查了很久才查到些资料,现将这些资料整理一下,方便大家.

首先是一个网友自己编的函数.实现了和split()函数的功能.

 unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type userarray=array of string;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    function split(s: string; dot: char): userarray;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses StrUtils;

{$R *.dfm}
//按所给字符将字符串分隔成数组
function TForm1.split(s:string;dot:char):userarray;
var
str:userarray;
i,j:integer;
begin
i:=1;
j:=0;
SetLength(str, 255);

while Pos(dot, s) > 0 do    //Pos返回子串在父串中第一次出现的位置.
begin
str[j]:=copy(s,i,pos(dot,s)-i);
i:=pos(dot,s)+1;
s[i-1] := chr(ord(dot)+1);
j:=j+1;
end;
str[j]:=copy(s,i,strlen(pchar(s))-i+1);
result:=str;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  ur:userarray;
  i:Integer;
begin
  ur:=split(Edit1.Text,';');
  for i :=0 to 255 do
  begin
    if length(ur[i])=0 then Exit;
    ShowMessage(ur[i]);
  end;

end;

end.

说明,测试这个代码时请在窗体上放一个文本编辑框和一个按钮,字符串是以';'号分割的;

第二种方法比较简单:

TStringList的用法 
TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的。
常规的用法大家都知道,现在来讨论它的一些高级的用法。
先把要讨论的几个属性列出来:
1、CommaText
2、Delimiter & DelimitedText
3、Names & Values & ValueFromIndex
先看第一个:CommaText。怎么用呢?用代码说话:
const
  constr :String = 'aaa,bbb,ccc,ddd';
var
  strs :TStrings;
  i :Integer;
begin
  strs := TStringList.Create;
  strs.CommaText := constr;
  for i := 0 to Strs.Count-1 do
    ShowMessage(Strs[i]);
end;
执行了这段代码后,可以看到ShowMessage显示出来的分别是:aaa bbb ccc ddd。
也就是说,strs.CommaText := constr这一句的作用,就是把一个字符串以','为分割符,分段添加到TStrings中。
那么如果不是以','来分割,又该怎么做呢?现在看第二个例子。使用Delimiter和DelimitedText。
const
  constr :String = 'aaa\bbb\ccc\ddd';
var
  strs :TStrings;
  i :Integer;
begin
  strs := TStringList.Create;
  strs.Delimiter := '\';
  strs.DelimitedText := constr;
  for i := 0 to Strs.Count-1 do
    ShowMessage(Strs[i]);
end;
可以看到, 显示的效果和第一个例子是一模一样的。解释一下:
Delimiter为分隔符,默认为:','。DelimitedText就是按Delimiter为分隔符的一个串,得到赋值后回把这个字符串按Delimiter的字符添加到TStrings中。
说到这里,有想起一个属性,QuoteChar。其默认值为:'"'(不包括单引号)
有何用呢?看例子:
const
  constr :String = '"aaa"\"bbb"\"ccc"\"ddd"';
var
  strs :TStrings;
  i :Integer;
begin
  strs := TStringList.Create;
  strs.Delimiter := '\';
  strs.DelimitedText := constr;
  for i := 0 to Strs.Count-1 do
    ShowMessage(Strs[i]);
end;
显示出来的仍然是aaa bbb ccc ddd。为什么不是:"aaa" "bbb" "ccc" "ddd"呢?
再来看一个例子:
const
  constr :String = '|aaa|\|bbb|\|ccc|\|ddd|';
var
  strs :TStrings;
  i :Integer;
begin
  strs := TStringList.Create;
  strs.Delimiter := '\';
  strs.QuoteChar := '|';
  strs.DelimitedText := constr;
  for i := 0 to Strs.Count-1 do
    ShowMessage(Strs[i]);
end;
显示出来的又是aaa bbb ccc ddd。对比一下,应该不难明白吧?这个就不多说了,用得也不多。
但是还要多说一句,当Delimiter为:','而QuoteChar为:'"'时,DelimitedText和CommaText是同等的。
最后要说的三个是:Names & Values & ValueFromIndex。
看看下面的代码:
const
  constr :String = '0=aaa,1=bbb,2=ccc,3=ddd';
var
  strs :TStrings;
  i :Integer;
begin
  strs := TStringList.Create;
  strs.CommaText := constr;
  for i := 0 to strs.Count-1 do
  begin
    ShowMessage(strs.Names[i]);
    ShowMessage(strs.Values[strs.Names[i]]);
    ShowMessage(strs.ValueFromIndex[i]);
  end;
end;
通过这个例子不难看出:
这个时候strs中的内容是:
0=aaa
1=bbb
2=ccc
3=ddd
而Names中则是:
0
1
2
3
在Values中则是:
aaa
bbb
ccc
ddd 


我看了这个资料后按照上面的例子用了,但是发现","号做为分隔符时好用,自己用strs.Delimiter =';'更改不了分隔符,不知为什么,不过能直接用','号分隔已经完成了我想要的功能了,希望哪为高手能指点一下


该文章转载自网络大本营:http://xrss.cn/Dev/Delphi/200751613291.Html
*****************************************************************************************

delphi中字符使用技巧---在制作dll时临阵磨枪 
Delphi中的字符串
来自Jenry的blog   http://dev.csdn.net/user/Jenry 
 
一:各种字符串 
  字符串是Object Pascal所有数据类型中最有用的类型。许多函数以字符串为传递参数。由于在Delphi中字符串的定义和使用有各种方式,包括Pascal中典型的字符串(String),Delphi支持的长字符串(ANSIString),类似于C语言的字符数组(Array of Char),指向字符的指针(Pchar)等。下面的文章就跟谈谈这些类型在定义和应用中的区别和注意事项。 
1. 传统的Pascal字符串 
  在Pascal中,典型的字符串是一定长度的字符序列。每一字符串有一设定的长度(缺省值为255),下面是一个例子: 
Var 
Address:String; 
Code:String[50]; 
Address是一长度为255的字符串,Code的最大长度为50。 
传统的Pascal字符串长度不能超过255。 
可以用字符串连接操作"+"把字符串连接在一起: 
Result:=String1+String2;  

2. Delphi中的长字符串 
  Delphi除了支持传统的Pascal短字符串还支持长字符串。长字符称为ANSIString。长字符串动态分配内存,即用字符串时才分配字符串所需内存,所以其长度不受限制。在Delphi中你如果用String1:String作类型说明,则String1既可能是短字符串也可能是长字符串,这取决于编译器中$H开关的设置。默认值为$H+,代表ANSI长字符串,VCL中的组件使用ANSI长字符串。长字符串以null结束,这就说明长字符串与C语言中的以null结束的字符串完全兼容。 
可以通过SetLength函数设置字符串的最大长度: 
SetLength(String1,100);用TrimLeft,TrimRight和Trim函数分别来消除字符串开头,结尾和首尾的空白区。 

3. 类似于C的字符数组 
  可以用以0为起点的数组来存储以null结束的字符串。如下定义: 
Var 
Name:Array[0..50] of Char;  

4. Pchar指针 
  如果Delphi中的Exended Syntax 已经设置(缺省值),以0为起点的字符数组就和指向字符的指针Pchar完全兼容,因为以0为起点的字符数组名即指向该字符数组首字符的指针。可以将字符串直接付值给Pchar指针。例如: 
var 
P: PChar; 
begin 
P := 'Hello world'; 
end; 
  这样P就指向存储字符串'Hello world'并以null结束的一块内存。 
许多Windows的应用程序接口API函数要求用Pchar类型作参数。Pchar指针在使用是首先用GetMem(var P: Pointer; Size: Integer)函数申请分配内存,程序结束时用FreeMem(var P: Pointer[; Size: Integer])函数释放内存。例如: 
Var WinDir,SysDir:Pchar; 
Begin 
GetMem(WinDir,256);{为指针分配内存} 
GetWindowsDirectory(WinDir,128);{将Windows安装目录放至WinDir} 
ShowMessage('Windows directory is'+WinDir);{显示结果} 
End;  

二:字符串转换 
  以上介绍了Delphi中的四类字符串的定义和使用。由于各类函数对字符串参数类型要求不一,这就需要进行字符串类型转换。 
1. 可以用StrPas将以null结束的字符串转换为Pascal短字符串。StrpCopy则完成相反的转换。 

2. 因为长字符串以null结束,所以可以用强制类型转换将长字符串转换成Pchar类型。用法是:Pchar(s),s是一个长字符串。强制类型转换返回一个指向长字符串首字符的指针,并且所指字符串以null 结束。例如: 
Var 
Caption,Message:string; 
Caption:='Hello World!'; 
Mssage:='This is a test of long string'; 
MessageBox(0,Pchar(Message),Pchar(Caption),MB_OK); 
小结:在使用Delphi中的字符串时,要时刻清楚该字符串的类型,以免引起混淆。在理解字符串时要把字符串与指针,内存分配联系起来,加强理解。
*******************************************************************************************************

[求助]adoconnection string 编写

没准执行程序放在哪一个目录。
所以
adoconnection.connectionstring里面的目录不能设成固定的。怎么编写str使得无论程序在那个目录都可以连接到数据库。

数据库放在程序文件夹的根目录下。

1

楼主用的是access 数据库吧

有一个函数可以获取执行程序所在路径 extractfilepath(application.ExeName)

可以把数据库放在 和执行程序同一个路径下 动态连接

思路就是这样子了,怎么写程序,自己考虑吧

最近加班要疯了

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -