增加多筆路徑資料所遇到的問題 |
尚未結案
|
988078
一般會員 發表:23 回覆:15 積分:7 註冊:2005-03-02 發送簡訊給我 |
|
i_am_jcl
一般會員 發表:3 回覆:9 積分:2 註冊:2002-04-15 發送簡訊給我 |
|
988078
一般會員 發表:23 回覆:15 積分:7 註冊:2005-03-02 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
988078 妳好: 我個人的縮排習慣與原程式的縮排方式不同,為了能方便的看懂程式,所以將程式重新整理過,而且為了節省資源,也將程式內的註解刪除掉了 (如有需要,請對照妳備份起來的原程式自行補回去),所以請先將妳的程式備份起來以備不時之需,然後找到下列事件處理程序與自定函式的位置,將內容代換掉,看看是否可解決妳的問題?
DList *find_Bestroad(DList *pointer, String end_road ) { int temp_count = 0; creat_Memo( pointer->roadname ); while ( pointer->road_numeral != 0 || pointer->an_road_numeral != 0 ) { if ( pointer->roadname == end_road ) break; else if ( pointer->road_numeral != 0 && pointer->an_road_numeral != 0 ) { if ( pointer->road_numeral > pointer->an_road_numeral ) { temp_road[ temp_count ] = pointer->road; delete_road[ temp_count ]->roadname = pointer->roadname; temp_road[ temp_count ]->num = all_num pointer->road_numeral; all_num = all_num pointer->an_road_numeral; pointer = pointer->an_road; creat_Memo( pointer->roadname ); } else { temp_road[ temp_count ] = pointer->an_road; delete_road[ temp_count ]->roadname = pointer->roadname; temp_road[ temp_count ]->num = all_num pointer->an_road_numeral; all_num = all_num pointer->road_numeral; pointer = pointer->road; creat_Memo( pointer->roadname ); } } else if ( pointer->an_road_numeral == 0 ) { all_num = all_num pointer->road_numeral; pointer = pointer->road; creat_Memo( pointer->roadname ); } } counti = temp_count; return pointer; } DList *start_find(DList *ptr, String main_roadname ) { int count = 0; while (ptr->roadname != main_roadname && ptr->road_numeral != 0 || ptr->an_road_numeral != 0) { if ( ptr->road_numeral != 0 && ptr->an_road_numeral != 0 ) { if (ptr->roadname == main_roadname) { break; } else { temp_road[count] = ptr->an_road; count ; ptr = ptr->road; } } else if (ptr->an_road_numeral == 0) { if (ptr->roadname != main_roadname) { ptr = ptr->road; } else { break; } } else { if (ptr->roadname != main_roadname) { ptr = ptr->an_road; } else { break; } } } counti = count; return ptr; } void find_endroad( DList *pointer, String start_road ) { DList *ptr; int temp_count = 0; save_tail = save_head; ptr = pointer; while (ptr->road_numeral != 0 || ptr->an_road_numeral != 0) { if (ptr->road_numeral != 0 && ptr->an_road_numeral != 0) { if (ptr->roadname != start_road && ptr->roadname != Form1->ComboBox1->Text) { creat_combobox(ptr->roadname); } temp_road[temp_count] = ptr->an_road; ptr = ptr->road; temp_count ; } else if (ptr->an_road_numeral == 0) { if (ptr->roadname != start_road && ptr->roadname != Form1->ComboBox1->Text) { creat_combobox(ptr->roadname); } ptr = ptr->road; } else { if (ptr->roadname != start_road && ptr->roadname != Form1->ComboBox1->Text) { creat_combobox(ptr->roadname); } ptr = ptr->an_road; } } creat_combobox(ptr->roadname); counti = temp_count; } void __fastcall TForm1::ComboBox1Click(TObject *Sender) { save_head = new Save_roadname; save_head->next = NULL; ComboBox2->Clear(); String sel_road; sel_road = ComboBox1->Text; DList *start_ptr, *end_ptr; start_ptr = start_find(head, sel_road); if (start_ptr->roadname != sel_road) { for (int i = 0; i < counti; i ) { start_ptr = start_find(temp_road[i], sel_road); } } *find_head = *start_ptr; find_endroad(start_ptr, sel_road); for (int i = 0; i < counti; i ) { find_endroad(temp_road[i], sel_road); } printer_combobox(); }7 天天敲鍵盤 v 時時按滑鼠 8 發表人 - RedSnow 於 2005/10/11 19:33:21 |
988078
一般會員 發表:23 回覆:15 積分:7 註冊:2005-03-02 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |