線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1319
推到 Plurk!
推到 Facebook!

textfile寫入access DB中

答題得分者是:小傑克
l730626
一般會員


發表:22
回覆:21
積分:8
註冊:2009-03-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-03-29 22:00:10 IP:140.127.xxx.xxx 訂閱
我有一個txt文件檔內容如下

報表名稱:xxxxxxx 標號:1111111111
日期:00000000

no 成本 class 2008/12/01 2008/12/15 2008/12/30
-------- ------- --------- --------------- ---------------- ----------------
252 20 庫存量 68 100 0
訂購量 0 0 0
需求量 500 0 0
短缺量 432 332 332


而我只想截取中間的內容~像下面~~~~
no 成本 class 2008/12/01 2008/12/15 2008/12/30
-------- ------- --------- --------------- ---------------- ----------------
252 20 庫存量 68 100 0
訂購量 0 0 0
需求量 500 0 0
短缺量 432 332 332

然後轉到access DB中 格式如下:
no 成本 需求日期庫存量 訂購量需求量 短缺量
252202008/12/01680500432
252202008/12/1510000332
252202008/12/30000332


我是新手~我只會一整行的貼~關於行列的變化跟截取中間內容~想很久~不知道怎麼寫~
可以請各位大大~幫個忙~為我指點迷津一下
小傑克
資深會員


發表:5
回覆:209
積分:357
註冊:2009-02-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-03-30 12:55:57 IP:59.112.xxx.xxx 訂閱
您好
可能會用到底下一些東西 , 你可以先研究一下
TStringList , 這個可以直接讀文字檔案並且結構就像Tmemo的文字一樣一行一行的
trim() 文字處理中可以去掉頭尾的空白
Pos(substr , str) , PosEx(substr, str , offset) 這兩個可以找出字元位置
Copy (s,index,count ) 這個可以截字串

先用 stringlist 讀出檔案後, 逐行判斷內容來處理應該可以解決,大概像底下這樣
var o : TStringList;
iCount:integer;

o := TStringList.Create;
o.LoadFromfile(FileName);
For iCount := 0 to o.Count-1 do
begin
if Pos('--', o.String[iCount]) <> -1 then
..........
end;
o.Free;


------
額有朝天骨,眼中有靈光
christie
資深會員


發表:30
回覆:299
積分:475
註冊:2005-03-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-03-30 16:56:34 IP:59.125.xxx.xxx 未訂閱
參考
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TSKUSeparator = set of char;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;

implementation
{$R *.dfm}
{******************************************************
function skuGetTokens(s:string; separators: TSKUSeparator): TStringList;
Parses a string to get the tokens separated by any of a set
of separator characters. The tokens are returned in a
TStringList object which the caller needs to free after use.
Note: The caller must free the returned TStringList object
after use.
Example:
var
tokens: TStringList;
begin
tokens := skuGetTokens('parse, gettoken, utility',[' ',',']);
...use the tokens...
...tokens[0] will have 'parse'
...tokens[1] will have 'gettoken'
...tokens[2] will have 'utility'
tokens.free;
Tip: A token itself can be parsed further to get another list of
tokens and so on.
******************************************************}
function skuGetTokens(s:string; separators: TSKUSeparator): TStringList;
var
slist: TStringList;
test, token: string;
begin
slist := TStringList.create;
test := s;
result := slist;
while (Length(Test)>0) do
begin
//delete initial space
while (Length(Test)>0) and (test[1] in separators) do
Delete(test,1,1);
if (Length(Test)=0) then
exit;
token := '';
while (Length(Test)>0) and (not (test[1] in separators)) do
begin
token := token test[1];
Delete(test,1,1);
end;
slist.add(token);
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
tokens:TStringList;
begin
s:='no 成本 class 2008/12/01 2008/12/15 2008/12/30';
tokens := skuGetTokens(s,[' ',',']);
caption:=tokens[0] '_' tokens[1] '_' tokens[2] '_' tokens[3] '_' tokens[4] '_' tokens[5]
end;
end.

------
What do we live for if not to make life less difficult for each other?
編輯記錄
christie 重新編輯於 2009-03-30 16:59:07, 註解 無‧
l730626
一般會員


發表:22
回覆:21
積分:8
註冊:2009-03-29

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-03-31 01:32:18 IP:140.127.xxx.xxx 訂閱
ll 謝謝你們的指點~我在針對你們的建議~仔細研究~非常感激你們的幫忙喔
系統時間:2024-05-18 12:42:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!