出現"RichEdit line insertion error"的錯誤訊息如何用try~catch解決 |
答題得分者是:Stallion
|
astro0803
一般會員 發表:18 回覆:30 積分:9 註冊:2007-05-28 發送簡訊給我 |
我的程式有時會出現"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 發送簡訊給我 |
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 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
astro0803
一般會員 發表:18 回覆:30 積分:9 註冊:2007-05-28 發送簡訊給我 |
你是說叫我把字串貼給你看嗎?還是說有什麼方法可以找到此錯誤字串的位置?
如果說你是要看字串的話,那下面的網址是我的資料來源(不是的話就別看了) http://news.bbc.co.uk/2/hi/europe/6912965.stm(bbc新聞網) 這資料分成標題、標題下的簡介和文章,因為我有試標題和簡介,這部份沒問題,所以再加上文章就有問題,所以我才會以為是長度問題! 如果說是要我去找出錯誤的字串位置的話,那可不可以教我一下,因為我不懂的怎麼使用! p.s.那新聞有點長且都英文,所以......不用勉強! 謝謝大家把我的文章看完! |
astro0803
一般會員 發表:18 回覆:30 積分:9 註冊:2007-05-28 發送簡訊給我 |
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 發送簡訊給我 |
|
astro0803
一般會員 發表:18 回覆:30 積分:9 註冊:2007-05-28 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
astro0803
一般會員 發表:18 回覆:30 積分:9 註冊:2007-05-28 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
astro0803
一般會員 發表:18 回覆:30 積分:9 註冊:2007-05-28 發送簡訊給我 |
|
shengbao
一般會員 發表:6 回覆:15 積分:4 註冊:2002-11-16 發送簡訊給我 |
此程式有少許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, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |