全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3597
推到 Plurk!
推到 Facebook!

如何把TXT檔轉出

答題得分者是:channel
solid098
一般會員


發表:16
回覆:14
積分:6
註冊:2007-02-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-20 12:09:22 IP:203.69.xxx.xxx 訂閱
請問~DELPHI有方法可以讀入TXT檔寫成欄位格式,並INSERT到資料庫內嗎!?
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-20 13:11:01 IP:59.114.xxx.xxx 訂閱
可以的,可用TStringList讀檔…
不過您可能要說明一下您的txt的格式為何嗎?這樣才有辦法幫您…

===================引 用 solid098 文 章===================
請問~DELPHI有方法可以讀入TXT檔寫成欄位格式,並INSERT到資料庫內嗎!?
------
~小弟淺見,參考看看~
solid098
一般會員


發表:16
回覆:14
積分:6
註冊:2007-02-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-20 13:46:42 IP:203.69.xxx.xxx 訂閱

===================引 用 channel 文 章===================
可以的,可用TStringList讀檔…
不過您可能要說明一下您的txt的格式為何嗎?這樣才有辦法幫您…

===================引 用 solid098 文 章===================
請問~DELPHI有方法可以讀入TXT檔寫成欄位格式,並INSERT到資料庫內嗎!?

那我想在請教各問題,我是否可以把TXT檔先讀取到類似像dbgrid的物件內,然後再做DB的INSERT動作嗎?
編輯記錄
solid098 重新編輯於 2007-04-20 13:49:33, 註解 無‧
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-04-20 14:37:44 IP:59.114.xxx.xxx 訂閱
可以的
讀到DBGrid需要有DataSet,您可使用TClientDataSet元件
透過讀取到的TXT檔寫入TClientDataSet暫存,DBGrid再連到TClientDataSet即可

===================引 用 solid098 文 章===================
那我想在請教各問題,我是否可以把TXT檔先讀取到類似像dbgrid的物件內,然後再做DB的INSERT動作嗎?
------
~小弟淺見,參考看看~
solid098
一般會員


發表:16
回覆:14
積分:6
註冊:2007-02-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-04-20 14:49:39 IP:203.69.xxx.xxx 訂閱

===================引 用 channel 文 章===================
可以的
讀到DBGrid需要有DataSet,您可使用TClientDataSet元件
透過讀取到的TXT檔寫入TClientDataSet暫存,DBGrid再連到TClientDataSet即可

===================引 用 solid098 文 章===================
那我想在請教各問題,我是否可以把TXT檔先讀取到類似像dbgrid的物件內,然後再做DB的INSERT動作嗎?

S/N; 掃描時間 ; 變動時間 ;
01 ; 00:00:00,0 ; 00:00:00,0 ;
02 ; 00:35:53,1 ; 00:45:43,1 ;
03 ; 00:00:00, ; 00:00:00, ;

這是我的TXT檔,"S/N,掃描時間,變動時間"各為不同欄位,分號為分割,我該如何把這些檔案寫成欄位格式,並寫入DBGrid內,可以麻煩把程式後面加上註解,不好意思麻煩一下
我還是DELPHI的初學者,想多了解一點,麻煩
編輯記錄
solid098 重新編輯於 2007-04-20 15:03:48, 註解 無‧
solid098 重新編輯於 2007-04-20 15:25:14, 註解 無‧
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-04-20 15:37:11 IP:61.64.xxx.xxx 訂閱
這跟你是否為 delphi 初學者無關

跟你的設計東西能力有關,不一定是設計程式,只要是設計,都需要這種能力

你需要比較好的邏輯思考,與多看、多聽來強化你的設計能力
看電影是一種方式,散步也是,很多方法都可以,只要你無處不學
編輯記錄
syntax 重新編輯於 2007-04-20 15:37:44, 註解 無‧
solid098
一般會員


發表:16
回覆:14
積分:6
註冊:2007-02-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-04-20 15:52:49 IP:203.69.xxx.xxx 訂閱

===================引 用 syntax 文 章===================
這跟你是否為 delphi 初學者無關

跟你的設計東西能力有關,不一定是設計程式,只要是設計,都需要這種能力

你需要比較好的邏輯思考,與多看、多聽來強化你的設計能力
看電影是一種方式,散步也是,很多方法都可以,只要你無處不學


昏倒,謝謝你給我的意見,就因為是初學者,所以才要多看人家的程式,加以訓練我的程式邏輯思考能力,還是謝謝你給我的意見^^
我現在只是不了解DELPHI的一些寫法所以想多知道一點
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-04-20 16:20:08 IP:59.114.xxx.xxx 訂閱

procedure TForm1.Button1Click(Sender: TObject);
var
aSL1, aSL2: TStringList;
I, J: Integer;
aStr: String;
begin
aSL1 := TStringList.Create;//讀行
aSL2 := TStringList.Create;//讀列
try
aSL1.LoadFromFile('C:\test.txt');//載入文字檔
for I := 0 to aSL1.Count-1 do
begin
aStr := StringReplace(aSL1.Strings[I], ';', ',', [rfReplaceAll]);//將每一行的分號換為逗號,因為StringList的CommaText是用逗號作區隔
aSL2.CommaText := aStr;
for J := 0 to aSL2.Count-1 do
ShowMessage(aSL2.Strings[J]);//這樣子就可以讀出每一列(欄位)的值
end;
finally
FreeAndNil(aSL1);
FreeAndNil(aSL2);
end;
end;

StringList的CommaText是用逗號作區隔好像可以下程式用其他的符號(例:分號)作區隔,不過小弟忘了怎麼做了…
所以才會用StringReplace將分號改為逗號…

===================引 用 solid098 文 章===================
S/N; 掃描時間?;? 變動時間 ;
01? ; 00:00:00,0 ; 00:00:00,0 ;
02? ; 00:35:53,1 ; 00:45:43,1 ;
03? ; 00:00:00,???;? 00:00:00,??;

這是我的TXT檔,"S/N,掃描時間,變動時間"各為不同欄位,分號為分割,我該如何把這些檔案寫成欄位格式,並寫入DBGrid內,可以麻煩把程式後面加上註解,不好意思麻煩一下
我還是DELPHI的初學者,想多了解一點,麻煩
------
~小弟淺見,參考看看~
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-04-20 16:20:11 IP:122.124.xxx.xxx 未訂閱
solid098您好:

此網站是程式討論區,所以是討論程式而不是索取程式...
因此希望您能PO上有問題的程式碼,讓前輩們幫您看看問題在哪邊

順心



===================引 用 solid098 文 章===================
昏倒,謝謝你給我的意見,就因為是初學者,所以才要多看人家的程式,加以訓練我的程式邏輯思考能力,還是謝謝你給我的意見^^
我現在只是不了解DELPHI的一些寫法所以想多知道一點
編輯記錄
taishyang 重新編輯於 2007-04-20 16:20:48, 註解 無‧
solid098
一般會員


發表:16
回覆:14
積分:6
註冊:2007-02-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-04-20 16:25:50 IP:203.69.xxx.xxx 訂閱
channel謝謝你,taishyang不好意思~~下次我會注意這一點
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-04-20 16:48:34 IP:61.64.xxx.xxx 訂閱
呵呵
不用昏倒
久了你就會瞭解

在論壇上,很多人都說這不會、那不會
但依據多寡來分,可分成

1.懶得學習
2.方法法則不懂
3.最後才是程式語言本身語法不懂

根據你的問題,可以發現,你連如何安排資料都不清楚
表示,你在資料結構上的功力不足,這根程式無直接關連,跟語言更無關係

比資料幻化成數據,填到 TXT 檔內,只需要筆記本,就做得來

用程式,也不過是將相同步驟寫成程式碼,不需要用到很高深的函數,基本函數,就可以做到
你連如何應用基本函數都不知道,表示,你書不看
如果你都知道基本函式,但不會用,就如我所言,設計能力需要加強

具備基本功力以後,再來用元件,才會真的得心應手

大家都以為,Delphi 是元件堆砌工具,只要會堆,一定可以寫出程式,但不是如此,只會堆者,寫出的往往是廢物
Delphi 是一項很強的工具,你不會用,不要怪自己是新手,因為程式設計上,有很多是不與語言相依的
設計能力就是,多看多思考日常身活中的各種作法,才是最佳的訓練方式,因為那才是大家做出來的精華-「解決事情的方法」
光看程式範例,ㄟ,進步有限,因為好的範例不多

而邏輯思考能力,建議你去看,演算法方面的書,效果比看單一程式有用,我個人是看過五本,覺得看懂得不多,尤以其中三本原文,很多地方,我根本不知所云
但所得已經很驚人,可以讓很多原本不知道如何去規劃演算方式的問題,有新的想法,而且是有用的想法
你的問題

1. 解決將實際資料安排成文字格式,有系統的放置
2. 學習讀檔
3. 讀進資料,既格式是你安排,到此,沒理由不會讀
4. 處理

我是覺得,你不是不會,是不肯做,假裝不會,自己騙自己,所以真的就不會了
建議你,反正是電腦,放手去做,大不了,刪除重寫

S/N; 掃描時間 ; 變動時間 ;
01 ; 00:00:00,0 ; 00:00:00,0 ;
02 ; 00:35:53,1 ; 00:45:43,1 ;
03 ; 00:00:00, ; 00:00:00, ;

轉到 TXT 真的難嗎?

你不會這樣做嗎?沒想過?這樣你還認為你的能力,不需要加強?
一個呆子式的直接作法

SN=01
ST=00:00:00,0
MT=00:00:00,0
SN=02
ST=00:35:53,1
MT=00:45:43,1
...........................
一行放一個欄位,三行為一筆資料,一次讀三行
這是基本功,更好的作法,等你會基本功練足了再說吧

讀檔,所有入門書,都會教,你不看書的吧!
那你就直接用大家說的 TStringList.LoadFromFile / Memo.Loadfromfile / RichEdit.LoadfromFile 即可

讀進來,要寫入DBGrid,請先去看 DBGrid 的說明,瞭解用法
再將讀進來的東西,一行為一攔,丟到欄位去

最後,打完收功

程式寫法百百種,但實際上只有一種,因為程式語法,關鍵自、函數,就是那樣
會有千萬種變化,是演算法則

無奈,你兩者都缺

通常都是不看書的結果,知識就在那,你不自學,來這裡,聽到的都是片面,只會成為三角貓功夫

如果你先自學,再來問,就變成補強知識,可成為強者

但補強知識者,會先
說明已經學到那個階段
瞭解了哪些作法
有程式者,會貼出
做後才針對問題核心,提出疑問
這樣,有相關經驗者,馬上可以做出建議

而不是幫你補充基本功就應該學習到的知識

我只是覺得你現階段欠缺的不是 Delphi 的知識,是設計的能力,是將資料轉成抽象資料結構的能力

覺得你應該多嘗試,光看,是能學到多少,你也知道

若是你有做,哪就應該說清楚,說出來,大家好學習,或互相切磋,不要像有些假新手之藉口推託問的問題比新手還糟糕
當然,你後來的問題很清楚,只是,你有盲點沒看到,程式知識,是需要學習,沒錯,但不是你真正的問題
改善設計能力,可以讓你少問很多像初學者的問題,改問有深度的問題
就算你沒學過的方向,提問時,問法也會比較有深度

而不是像你第一次「請問~DELPHI有方法可以讀入TXT檔寫成欄位格式,並INSERT到資料庫內嗎!?」這樣一行
至少會像
後面「我想在請教各問題,我是否可以把TXT檔先讀取到類似像dbgrid的物件內,然後再做DB的INSERT動作嗎?

S/N; 掃描時間 ; 變動時間 ;
01 ; 00:00:00,0 ; 00:00:00,0 ;
02 ; 00:35:53,1 ; 00:45:43,1 ;
03 ; 00:00:00, ; 00:00:00, ;

這是我的TXT檔,"S/N,掃描時間,變動時間"各為不同欄位,分號為分割,我該如何把這些檔案寫成欄位格式,並寫入DBGrid內,可以麻煩把程式後面加上註解,不好意思麻煩一下」

這樣,比較明確
讓大家知道你要問

1. 將資料轉成抽象資料結構
2. 讀出/寫入 TXT 檔的方法(但又無奈,搜尋就有,不需問吧)
3. 寫入DBGrid (這 Help 檔就有,也不需問)

所以我歸納,你比較欠缺的是「設計能力」

建議你資料結構,與演算法書籍,好好看一看

起碼好好看過一本 Delphi 的書,從頭到尾,一字不漏,三次以上

以下是不錯的選擇,如果你還找得到該書的話

1. Delphi 4 Unleashed
2. Delphi 5 Developer's Guide

還有 Delphi 自帶的說明文件 Object Pascal Language Guide

以上是建議,成功方法百百種,你看看就好

因為你說:「 我現在只是不了解DELPHI的一些寫法所以想多知道一點」

所以我就廢話多了一點,如看不慣,那就當沒看過,別因在下胡言亂語,壞了你的修養



solid098
一般會員


發表:16
回覆:14
積分:6
註冊:2007-02-15

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-04-20 17:30:48 IP:203.69.xxx.xxx 訂閱

===================引 用 syntax 文 章===================
呵呵
不用昏倒
久了你就會瞭解

在論壇上,很多人都說這不會、那不會
但依據多寡來分,可分成

1.懶得學習
2.方法法則不懂
3.最後才是程式語言本身語法不懂

根據你的問題,可以發現,你連如何安排資料都不清楚
表示,你在資料結構上的功力不足,這根程式無直接關連,跟語言更無關係

比資料幻化成數據,填到 TXT 檔內,只需要筆記本,就做得來

用程式,也不過是將相同步驟寫成程式碼,不需要用到很高深的函數,基本函數,就可以做到
你連如何應用基本函數都不知道,表示,你書不看
如果你都知道基本函式,但不會用,就如我所言,設計能力需要加強

具備基本功力以後,再來用元件,才會真的得心應手

大家都以為,Delphi 是元件堆砌工具,只要會堆,一定可以寫出程式,但不是如此,只會堆者,寫出的往往是廢物
Delphi 是一項很強的工具,你不會用,不要怪自己是新手,因為程式設計上,有很多是不與語言相依的
設計能力就是,多看多思考日常身活中的各種作法,才是最佳的訓練方式,因為那才是大家做出來的精華-「解決事情的方法」
光看程式範例,ㄟ,進步有限,因為好的範例不多

而邏輯思考能力,建議你去看,演算法方面的書,效果比看單一程式有用,我個人是看過五本,覺得看懂得不多,尤以其中三本原文,很多地方,我根本不知所云
但所得已經很驚人,可以讓很多原本不知道如何去規劃演算方式的問題,有新的想法,而且是有用的想法
你的問題

1. 解決將實際資料安排成文字格式,有系統的放置
2. 學習讀檔
3. 讀進資料,既格式是你安排,到此,沒理由不會讀
4. 處理

我是覺得,你不是不會,是不肯做,假裝不會,自己騙自己,所以真的就不會了
建議你,反正是電腦,放手去做,大不了,刪除重寫

S/N; 掃描時間?;? 變動時間 ;
01? ; 00:00:00,0 ; 00:00:00,0 ;
02? ; 00:35:53,1 ; 00:45:43,1 ;
03? ; 00:00:00,???;? 00:00:00,??;

轉到 TXT 真的難嗎?

你不會這樣做嗎?沒想過?這樣你還認為你的能力,不需要加強?
一個呆子式的直接作法

SN=01
ST=00:00:00,0
MT=00:00:00,0
SN=02
ST=00:35:53,1
MT=00:45:43,1
...........................
一行放一個欄位,三行為一筆資料,一次讀三行
這是基本功,更好的作法,等你會基本功練足了再說吧

讀檔,所有入門書,都會教,你不看書的吧!
那你就直接用大家說的 TStringList.LoadFromFile / Memo.Loadfromfile / RichEdit.LoadfromFile 即可

讀進來,要寫入DBGrid,請先去看 DBGrid 的說明,瞭解用法
再將讀進來的東西,一行為一攔,丟到欄位去

最後,打完收功

程式寫法百百種,但實際上只有一種,因為程式語法,關鍵自、函數,就是那樣
會有千萬種變化,是演算法則

無奈,你兩者都缺

通常都是不看書的結果,知識就在那,你不自學,來這裡,聽到的都是片面,只會成為三角貓功夫

如果你先自學,再來問,就變成補強知識,可成為強者

但補強知識者,會先
說明已經學到那個階段
瞭解了哪些作法
有程式者,會貼出
做後才針對問題核心,提出疑問
這樣,有相關經驗者,馬上可以做出建議

而不是幫你補充基本功就應該學習到的知識

我只是覺得你現階段欠缺的不是 Delphi 的知識,是設計的能力,是將資料轉成抽象資料結構的能力

覺得你應該多嘗試,光看,是能學到多少,你也知道

若是你有做,哪就應該說清楚,說出來,大家好學習,或互相切磋,不要像有些假新手之藉口推託問的問題比新手還糟糕
當然,你後來的問題很清楚,只是,你有盲點沒看到,程式知識,是需要學習,沒錯,但不是你真正的問題
改善設計能力,可以讓你少問很多像初學者的問題,改問有深度的問題
就算你沒學過的方向,提問時,問法也會比較有深度

而不是像你第一次「請問~DELPHI有方法可以讀入TXT檔寫成欄位格式,並INSERT到資料庫內嗎!?」這樣一行
至少會像
後面「我想在請教各問題,我是否可以把TXT檔先讀取到類似像dbgrid的物件內,然後再做DB的INSERT動作嗎?

S/N; 掃描時間?;? 變動時間 ;
01? ; 00:00:00,0 ; 00:00:00,0 ;
02? ; 00:35:53,1 ; 00:45:43,1 ;
03? ; 00:00:00,???;? 00:00:00,??;

這是我的TXT檔,"S/N,掃描時間,變動時間"各為不同欄位,分號為分割,我該如何把這些檔案寫成欄位格式,並寫入DBGrid內,可以麻煩把程式後面加上註解,不好意思麻煩一下」

這樣,比較明確
讓大家知道你要問

1. 將資料轉成抽象資料結構
2. 讀出/寫入 TXT 檔的方法(但又無奈,搜尋就有,不需問吧)
3. 寫入DBGrid (這 Help 檔就有,也不需問)

所以我歸納,你比較欠缺的是「設計能力」

建議你資料結構,與演算法書籍,好好看一看

起碼好好看過一本 Delphi 的書,從頭到尾,一字不漏,三次以上

以下是不錯的選擇,如果你還找得到該書的話

1. Delphi 4 Unleashed
2. Delphi 5 Developer's Guide

還有 Delphi 自帶的說明文件 Object Pascal Language Guide

以上是建議,成功方法百百種,你看看就好

因為你說:「 我現在只是不了解DELPHI的一些寫法所以想多知道一點」

所以我就廢話多了一點,如看不慣,那就當沒看過,別因在下胡言亂語,壞了你的修養



感謝你的意見~~你推薦的書我會去找看看~~設計方面也許真的需要磨練囉!!謝謝你的意見囉~~


Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#13 引用回覆 回覆 發表時間:2007-04-20 19:00:13 IP:220.130.xxx.xxx 訂閱
請結案,你沒有任何一個問題有結案,謝謝。
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
系統時間:2024-04-24 11:40:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!