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

關於符號轉字串問題

答題得分者是:P.D.
schang
一般會員


發表:7
回覆:6
積分:2
註冊:2018-09-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2021-02-26 18:03:41 IP:59.124.xxx.xxx 未訂閱
在程式裡寫 SQL 時,為了要顯示在 Memo 上方便查看,都會在每行的前面加上換行符號。
例如:

[code delphi]
sql := 'select * from TABLE'
#13#10 'where COLUMN is not null '
#13#10 'order by COLUMN ';
[/code]

但每次下中斷點在 Watch List 裡查看時,它會變成同一行,然後「#13#10」會變成「'#$D#$A'」。
例如:'select * from TABLE '#$D#$A' where COLUMN is not null '#$D#$A' order by COLUMN '

請問要怎麼把他再用換行符號取代掉?方便我複製到記事本查看之類的。
例如變成這樣:
select * from TABLE
where COLUMN is not null
order by COLUMN

我試著用 TStringList 的 Delimiter 來分解,
但我不知道完整得應該要怎麼寫,用 #39 或 Chr(39) 之類的都不行 ><
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2021-03-17 10:27:33 IP:36.226.xxx.xxx 未訂閱
'where COLUMN is not null ' +#13+ 'order by COLUMN ';
我通常是這麼用!
然後把sql 丟到 Tmemo, 就可以看到你想要的東東
編輯記錄
P.D. 重新編輯於 2021-03-17 10:29:13, 註解 無‧
schang
一般會員


發表:7
回覆:6
積分:2
註冊:2018-09-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2021-04-09 16:18:23 IP:60.250.xxx.xxx 未訂閱
你的意思是,你會直接放一個 Memo 在畫面上,然後把 SQL 顯示在 Memo 裡嗎?
但我有時候只是 Debug 一下,下中斷點查看 SQL,好懶得再新增一個 Memo ><
===================引 用 P.D. 文 章===================
'where COLUMN is not null ' +#13+ 'order by COLUMN ';
我通常是這麼用!
然後把sql 丟到 Tmemo, 就可以看到你想要的東東
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2021-04-10 09:50:06 IP:114.24.xxx.xxx 未訂閱
對於一個很複雜組合性的sql, 通常我在設計時, 如果這個sql 是動態依不同條件產生的話, 我會在程式中放置個memo及button, 可以讓我隨時查看正確的語法, 方便debug, 除錯本來就是一個很累人的事, 我想這一點小事應該不會讓人覺得太麻煩的(相較於要除錯, 但語法要花更多時間去看來比較)
要不然你可以嘗試用 SQL.ADD('sql1 語法') 方式試試, 但你想分3段, 就要寫3次 SQL.ADD('sql語法2')..SQL.ADD('sql語法3'), 或許可以解決你的問題, 但不建議這樣做, 因為沒有效率
編輯記錄
P.D. 重新編輯於 2021-04-10 09:53:59, 註解 無‧
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2023-05-23 13:59:42 IP:59.120.xxx.xxx 未訂閱
在 Delphi 程式中,您可以使用 TStringListDelimitedText 屬性來將字串分解為多行,並使用換行符號進行連接。以下是一個範例程式碼:

[code delphi]

var sql: string; sqlList: TStringList; begin sql := 'select * from TABLE ' #13#10 'where COLUMN is not null ' #13#10 'order by COLUMN'; sqlList := TStringList.Create; try sqlList.Delimiter := #13#10; sqlList.DelimitedText := sql; // 輸出分解後的多行 SQL for sql in sqlList do ShowMessage(sql); // 可依需求修改為您想要顯示的方式,例如 Memo 等 finally sqlList.Free; end; end;
[/code]

在上述範例中,我們建立了一個 TStringList 物件 sqlList,並將 DelimitedText 屬性設定為包含 SQL 語句的字串。透過將 Delimiter 屬性設為 #13#10,字串將被分解為多行,然後可以逐行進行處理。
在範例程式碼中,我使用 ShowMessage 來顯示分解後的每一行 SQL。您可以根據需要修改為適合您的應用程式的方式,例如將每行 SQL 加入到 TMemo 控制項中。
這樣,您就可以將 SQL 字串正確地分解為多行,並以易於閱讀的方式在您的應用程式中顯示出來。



系統時間:2024-04-30 10:10:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!