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

出現"RichEdit line insertion error"的錯誤訊息如何用try~catch解決

答題得分者是:Stallion
astro0803
一般會員


發表:18
回覆:30
積分:9
註冊:2007-05-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-07-25 01:22:01 IP:122.123.xxx.xxx 訂閱
我的程式有時會出現"RichEdit line insertion error"這個對話框,有時又不會,所以想說不知能不能用try~catch來把他濾掉?還是說這問題沒辦法用此方法解決?
因為我的程式是去網路上抓資料,然後投出來給我看,我在想是不是因為有時抓的資料過長,所以才會產生此問題呢?
我的資料總共有三筆,放到
RichEdit是用下面的語法:
RichEdit1->SelAttributes->Size =14;
RichEdit1->Lines->Add(資料1);
RichEdit1->SelAttributes->Size =10;
RichEdit1->Lines->Add(資料2);
RichEdit1->SelAttributes->Size =12;
RichEdit1->Lines->Add(資料3);
有改成在論壇上找到的方法,錯是沒了!可是好像沒辦法印出1、2筆資料,程式如下:
RichEdit1->SelAttributes->Size =14;
RichEdit1->Lines->Strings[0]=資料1;
RichEdit1->SelAttributes->Size =10;
RichEdit1->Lines->Strings[1]=資料2;
RichEdit1->SelAttributes->Size =12;
RichEdit1->Lines->Strings[2]=資料3;
因為印不出來,我就在下面又加了此句:
RichEdit1->Lines->Text= RichEdit1->Lines->Strings[0] RichEdit1->Lines->Strings[1] RichEdit1->Lines->Strings[2];
這樣的話又變成全部的字型都一樣!所以就想說不然直接把這例外抓出來然後不管他好了,但不知道能不能這樣寫,而且不知道這個例外事件是什麼,所以才上來請教
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-07-25 01:29:58 IP:211.22.xxx.xxx 未訂閱
RichEdit1->SelAttributes->Size =14;
RichEdit1->Lines->Add(資料1);
RichEdit1->SelAttributes->Size =10;
RichEdit1->Lines->Add(資料2);
RichEdit1->SelAttributes->Size =12;
RichEdit1->Lines->Add(資料3);
以上的方法沒有錯誤~
你要注意的是抓進來顯式的資料內容是否為文字!如果中間有控制字元那麼就會發生不可預期的狀況。
astro0803
一般會員


發表:18
回覆:30
積分:9
註冊:2007-05-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-07-25 01:54:38 IP:122.123.xxx.xxx 訂閱
首先非常謝謝s大的幫忙,在這麼po文居然在短短的時間就可以得到您得回覆真的很感謝!
回到主題,我知道那幾行沒有錯誤,因為我說過會時有時無,那資料的來源我也是從網路上取得,是否有控制字元我並不知道,所以我如果去事先把可能會錯的控制字元給刪掉,這樣的話會有幫助嗎?另外控制字元是像換行(\n)之類的嗎?
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-07-25 01:57:54 IP:211.22.xxx.xxx 未訂閱
我指的是不可列印字元,你可以將字串以isprint來找看看!另外,絕對不是字串的長度,String是可以放2G的資料的,你的資料不會有那麼大吧!
astro0803
一般會員


發表:18
回覆:30
積分:9
註冊:2007-05-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-07-25 02:18:08 IP:122.123.xxx.xxx 訂閱
你是說叫我把字串貼給你看嗎?還是說有什麼方法可以找到此錯誤字串的位置?

如果說你是要看字串的話,那下面的網址是我的資料來源(不是的話就別看了)
http://news.bbc.co.uk/2/hi/europe/6912965.stm(bbc新聞網)
這資料分成標題、標題下的簡介和文章,因為我有試標題和簡介,這部份沒問題,所以再加上文章就有問題,所以我才會以為是長度問題!

如果說是要我去找出錯誤的字串位置的話,那可不可以教我一下,因為我不懂的怎麼使用!

p.s.那新聞有點長且都英文,所以......不用勉強!
謝謝大家把我的文章看完!
astro0803
一般會員


發表:18
回覆:30
積分:9
註冊:2007-05-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-08-10 01:25:51 IP:61.223.xxx.xxx 訂閱
s大我有參考你之前po的文章,下面是網址如果你忘了你可以再看一下http://delphi.ktop.com.tw/board.php?cid=168&fid=912&tid=86281

我想問的是在那篇文章,因為它是已經是一份文件檔,所以你用那個方法,但是我的程式所引用的文章是從網路上取得,所以我沒有事先把它存起來,我只是把它放到字串變數裡!所以我有做修改,但是如果那個變數字太多他就只會那出一段而已,其餘的都看不到。下面程式是我修改過的
<textarea name="code" class="cpp" rows="10" cols="60"> char *ptr; AnsiString Code,temp; Code=="網路上的資料";//來源從網路上! Code=Code.Trim(); ptr=Code.c_str(); temp=""; while(isprint(*ptr)||ptr=="\n"){ temp =*ptr ; } Code=temp; RichEdit1->Lines->Add(Code); </textarea>
編輯記錄
astro0803 重新編輯於 2007-08-10 01:34:29, 註解 無‧
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-08-10 13:13:19 IP:211.22.xxx.xxx 未訂閱
最近剛退休,閒閒在家!。寫了一個簡單的範例程式,希望符合你的需求。


至於他的原始範例程式,在這裡
astro0803
一般會員


發表:18
回覆:30
積分:9
註冊:2007-05-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-08-10 16:41:14 IP:122.123.xxx.xxx 訂閱
謝謝S大也謝謝KTOP論壇的各位版友!第一次去寫系統,才了解到有那麼多考量的地方,我想我會繼續加油,希望改天換我可以回答別人的問題,我想我應該會很開心吧!
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-08-10 17:02:06 IP:211.22.xxx.xxx 未訂閱
嗯!加油~
另請結案!謝謝!
===================引 用 astro0803 文 章===================
謝謝S大也謝謝KTOP論壇的各位版友!第一次去寫系統,才了解到有那麼多考量的地方,我想我會繼續加油,希望改天換我可以回答別人的問題,我想我應該會很開心吧!
astro0803
一般會員


發表:18
回覆:30
積分:9
註冊:2007-05-28

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-08-10 17:15:46 IP:122.123.xxx.xxx 訂閱
OK!我要結了!另外我不知道可不可以問一下你寫的那程式的一行指令嗎?
Screen->Cursor <----這個的功能在幹嘛?因為我沒用過,剛找一下有得都是在程式碼裡沒有介紹,所以想說請教你一下
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-08-10 17:20:10 IP:211.22.xxx.xxx 未訂閱
Screen是Borland Compiler提供的全域(Global)物件,目標在控制螢幕的屬性。
===================引 用 astro0803 文 章===================
OK!我要結了!另外我不知道可不可以問一下你寫的那程式的一行指令嗎?
Screen->Cursor <----這個的功能在幹嘛?因為我沒用過,剛找一下有得都是在程式碼裡沒有介紹,所以想說請教你一下
astro0803
一般會員


發表:18
回覆:30
積分:9
註冊:2007-05-28

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-08-10 17:20:51 IP:122.123.xxx.xxx 訂閱
用google找了一下,我找到了!s版主謝謝嚕^^
shengbao
一般會員


發表:6
回覆:15
積分:4
註冊:2002-11-16

發送簡訊給我
#13 引用回覆 回覆 發表時間:2007-09-22 09:31:43 IP:61.217.xxx.xxx 訂閱
此程式有少許BUG~中文無法顯示~因為用char~我加以修改



[code cpp]
//---------------------------------------------------------------------------
#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
bool Success;
char *pChar;
const char WebPageName[] = "Test.html";
AnsiString aString, TempString;
int Count;
TFileStream *aStream;

try
{
Screen->Cursor = crHourGlass;
Success = true;
aStream = new TFileStream( WebPageName, fmCreate );
try
{
this->IdHTTP1->Get(this->LabeledEdit1->Text,aStream);
}
catch(...)
{
Success = false;
ShowMessage("Retrieving webpage occurs an error !");
}
}
__finally
{
delete aStream;
Screen->Cursor = crDefault;
}

if ( ! Success )
{
DeleteFile(WebPageName);
return;
}

this->RichEdit1->Lines->LoadFromFile(WebPageName);
// for ( Count = 0 ; Count < this->RichEdit1->Lines->Count ; Count )
// {
aString = this->RichEdit1->Lines->Strings[Count];
aString = aString.Trim(); // could also TrimLeft() or TrimRight()
// pChar = aString.c_str();
TempString = "";
// while ( *pChar && ( isprint(*pChar) || *pChar == '\n' ) )
// TempString = *pChar ;
// this->RichEdit1->Lines->Strings[Count] = TempString;
this->RichEdit1->Lines->Add(aString.c_str());
// }
this->RichEdit1->Lines->SaveToFile(WebPageName);
ShowMessage("Loading specified webpage is done ! " IntToStr(this->RichEdit1->Lines->Count) " lines has been processed.");
}
//---------------------------------------------------------------------------

[/code]

===================引 用 Stallion 文 章===================
最近剛退休,閒閒在家!。寫了一個簡單的範例程式,希望符合你的需求。

至於他的原始範例程式,在這裡
------
sheng
編輯記錄
shengbao 重新編輯於 2007-09-22 09:33:47, 註解 無‧
系統時間:2024-04-20 22:28:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!