Changeset 43 for trunk/NewView
- Timestamp:
- Jan 2, 2007, 8:29:54 PM (19 years ago)
- Location:
- trunk/NewView
- Files:
-
- 1 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NewView/GlobalSearchForm.pas
r32 r43 142 142 uses 143 143 SysUtils, 144 DebugUnit, 144 145 ACLFileUtility, 145 ACLProfile,146 146 ACLDialogs, 147 147 ControlsUtility, … … 499 499 MatchingTopics := TList.Create; 500 500 501 ProfileEvent( 'Getting files');501 LogEvent(LogParse, 'Getting files'); 502 502 503 503 // make sure we ignore duplicate files... … … 535 535 end; 536 536 537 ProfileEvent( ' Searching ' + IntToStr( Files.Count ) + ' files');537 LogEvent(LogParse, ' Searching ' + IntToStr( Files.Count ) + ' files'); 538 538 for FileIndex := 0 to Files.Count - 1 do 539 539 begin … … 541 541 break; 542 542 Filename := Files[ FileIndex ]; 543 ProfileEvent( Filename);543 LogEvent(LogParse, Filename); 544 544 ThreadManager.UpdateProgress( 10 + FileIndex * 95 div Files.Count, 545 545 100, … … 553 553 554 554 try 555 ProfileEvent( ' Create THelpFile');555 LogEvent(LogParse, ' Create THelpFile'); 556 556 HelpFile := THelpFile.Create( FileName ); 557 557 558 ProfileEvent( ' Helpfile created');558 LogEvent(LogParse, ' Helpfile created'); 559 559 MatchingTopics.Clear; 560 560 561 ProfileEvent( ' Search file');561 LogEvent(LogParse, ' Search file'); 562 562 SearchHelpFile( HelpFile, 563 563 Query, … … 568 568 if MatchingTopics.Count > 0 then 569 569 begin 570 ProfileEvent( ' Sort results');570 LogEvent(LogParse, ' Sort results'); 571 571 // Create a searchresult object to send back to main thread. 572 572 SearchResult := TSearchResult.Create; … … 577 577 578 578 SearchResult.MatchingTopics.Sort( TopicRelevanceCompare ); 579 ProfileEvent( ' Display results');579 LogEvent(LogParse, ' Display results'); 580 580 581 581 ThreadManager.SendData( '', SearchResult ); 582 582 end; 583 583 584 ProfileEvent( 'Unload helpfile');584 LogEvent(LogParse, 'Unload helpfile'); 585 585 HelpFile.Destroy; 586 586 … … 598 598 599 599 end; 600 ProfileEvent( 'search completed');600 LogEvent(LogParse, 'search completed'); 601 601 ThreadManager.UpdateProgress( 100, 100, DoneMsg ); 602 602 Files.Destroy; … … 608 608 609 609 Result := nil; 610 ProfileEvent( 'done');610 LogEvent(LogParse, 'done'); 611 611 End; 612 612 -
trunk/NewView/HelpFile.pas
r32 r43 156 156 uses 157 157 BseErr, 158 DebugUnit, 158 159 ACLStringUtility, 159 160 ACLFileIOUtility, 160 ACLProfile,161 161 ACLLanguageUnit; 162 162 … … 220 220 constructor THelpFile.Create( const FileName: string ); 221 221 begin 222 ProfileEvent( 'Helpfile Load: ' + FileName);222 LogEvent(LogParse, 'Helpfile Load: ' + FileName); 223 223 224 224 _FileName := FileName; … … 338 338 procedure THelpFile.ReadHeader; 339 339 begin 340 ProfileEvent( 'Read header');340 LogEvent(LogParse, 'Read header'); 341 341 342 342 ReadFileBlock( _pHeader, … … 371 371 pEnd: pTTOCEntryStart; 372 372 begin 373 ProfileEvent( 'Read contents');373 LogEvent(LogParse, 'Read contents'); 374 374 375 375 if _pHeader^.ntoc = 0 then … … 420 420 pEnd: pbyte; 421 421 begin 422 ProfileEvent( 'Read dictionary');422 LogEvent(LogParse, 'Read dictionary'); 423 423 424 424 if _pHeader^.ndict = 0 then … … 475 475 pIndexData: pointer; 476 476 begin 477 ProfileEvent( 'Read index');477 LogEvent(LogParse, 'Read index'); 478 478 479 479 _Index := TStringList.Create; … … 529 529 SearchTableRecordLengthIs16Bit: boolean; 530 530 begin 531 ProfileEvent( 'Read search table');531 LogEvent(LogParse, 'Read search table'); 532 532 533 533 if _pHeader^.SearchLen = 0 then 534 534 begin 535 ProfileEvent( 'Read search table');535 LogEvent(LogParse, 'Read search table (len = 0'); 536 536 exit; 537 537 end; -
trunk/NewView/HelpTopic.pas
r38 r43 253 253 uses 254 254 SysUtils, 255 ACLUtility, ACLStringUtility, ACL Profile, ACLFileIOUtility,255 ACLUtility, ACLStringUtility, ACLFileIOUtility, 256 256 AStringUtilityUnit, 257 257 ACLLanguageUnit, -
trunk/NewView/SearchUnit.pas
r33 r43 48 48 uses 49 49 SysUtils, 50 DebugUnit, 50 51 ACLStringUtility, 51 ACLProfile,52 52 HelpTopic; 53 53 … … 360 360 Term := Query.Term[ TermIndex ]; 361 361 362 ProfileEvent('Searching for term "'362 LogEvent(LogSearch, 'Searching for term "' 363 363 + Term.Text 364 364 + '", ' … … 379 379 TermPart := Term.Parts[ TermPartIndex ]; 380 380 381 ProfileEvent(' Searching for [' + TermPart + ']' );381 LogEvent(LogSearch, ' Searching for [' + TermPart + ']' ); 382 382 383 383 AllocUInt32Array( DictionaryRelevances, … … 416 416 // this search term part, search topic texts 417 417 418 ProfileEvent(' Dictionary search done' );418 LogEvent(LogSearch, ' Dictionary search done' ); 419 419 ClearUInt32Array( TopicsMatchingTermPart, 420 420 TopicCount ); … … 441 441 end; 442 442 443 ProfileEvent( 'TOpic searches done' );443 LogEvent(LogSearch, 'Topic searches done' ); 444 444 445 445 if TermPartIndex = 0 then … … 460 460 // for all parts of the term. Now combine all together 461 461 462 ProfileEvent('Checking for sequences' );462 LogEvent(LogSearch, 'Checking for sequences' ); 463 463 for TopicIndex := 0 to TopicCount - 1 do 464 464 begin … … 494 494 // Search titles and index 495 495 496 ProfileEvent(' Searching titles' );496 LogEvent(LogSearch, ' Searching titles' ); 497 497 SearchTopicTitles( HelpFile, Term.Text, TopicsMatchingTerm ); 498 498 499 ProfileEvent(' Searching index' );499 LogEvent(LogSearch, ' Searching index' ); 500 500 SearchIndex( HelpFile, Term.Text, TopicsMatchingTerm ); 501 501 502 ProfileEvent(' Combining' );502 LogEvent(LogSearch, ' Combining' ); 503 503 case Term.CombineMethod of 504 504 cmOptional: … … 530 530 end; 531 531 532 ProfileEvent('Search completed, converting to list' );532 LogEvent(LogSearch, 'Search completed, converting to list' ); 533 533 534 534 // Now convert to list form. … … 547 547 end; 548 548 549 ProfileEvent('Freeing arrays' );549 LogEvent(LogSearch, 'Freeing arrays' ); 550 550 FreeUInt32Array( TopicRelevances, TopicCount ); 551 551 FreeUInt32Array( TopicsExcluded, TopicCount ); … … 554 554 FreeUInt32Array( TopicsMatchingDictWord, TopicCount ); 555 555 556 ProfileEvent('Done' );556 LogEvent(LogSearch, 'Done' ); 557 557 end; 558 558 -
trunk/NewView/SettingsUnit.pas
r33 r43 137 137 Uses 138 138 SysUtils, 139 DebugUnit, 139 140 Dos, 140 141 ACLFileUtility, 141 142 ACLUtility, 142 143 ACLStringUtility, 143 ACLProfile,144 144 ControlsUtility; 145 145 … … 192 192 begin 193 193 try 194 ProfileEvent( 'Calling IniFile.Destroy');194 LogEvent(LogSettings, 'Calling IniFile.Destroy'); 195 195 IniFile.Destroy; 196 196 except … … 198 198 begin 199 199 // don't care if we can't save settings. 200 ProfileEvent(' Exception: ' + E.Message );200 LogEvent(LogSettings, ' Exception: ' + E.Message ); 201 201 end; 202 202 end; … … 416 416 417 417 Begin 418 ProfileEvent('SaveSettings' );418 LogEvent(LogSettings, 'SaveSettings' ); 419 419 GetIniFile( IniFile ); 420 420 with IniFile do … … 563 563 end; 564 564 CloseIniFile( IniFile ); 565 ProfileEvent(' Done' );565 LogEvent(LogSettings, ' Done' ); 566 566 567 567 End; -
trunk/NewView/StartupUnit.pas
r25 r43 50 50 Dos, 51 51 SysUtils, 52 DebugUnit, 52 53 PMWin, 53 54 ACLUtility, … … 55 56 ACLFileUtility, 56 57 AStringUtilityUnit, 57 ACLProfile,58 58 HelpManagerUnit; 59 59 … … 67 67 EnvironmentVarValue: string; 68 68 begin 69 ProfileEvent('Translating environment vars' );69 LogEvent(LogStartup, 'Translating environment vars' ); 70 70 for i := 0 to Items.Count - 1 do 71 71 begin … … 75 75 Item := StrUnDoubleQuote( Item ); // remove double quotes 76 76 77 ProfileEvent(' Item: ' + Item );77 LogEvent(LogStartup, ' Item: ' + Item ); 78 78 EnvironmentVarValue := GetEnv( Uppercase( Item ) ); 79 79 if DosError = 0 then 80 80 begin 81 81 // environment var exists - use it's value 82 ProfileEvent(' Translated: ' + EnvironmentVarValue );82 LogEvent(LogStartup, ' Translated: ' + EnvironmentVarValue ); 83 83 while EnvironmentVarValue <> '' do 84 84 begin … … 251 251 Filenames := TStringList.Create; 252 252 253 StringToList( cmdLineParameters.getFileNames, FileItems, '+' );253 StringToList(CmdLineParameters.getFileNames, FileItems, '+' ); 254 254 TranslateIPFEnvironmentVars( FileItems, FileNames ); 255 255 … … 320 320 var 321 321 tmpCmdLine: String; 322 tmpSplittedCmdLine : TStringList;323 322 tmpRc : Integer; 324 323 … … 333 332 // parse parameters into Parameters object 334 333 tmpCmdLine := nativeOS2GetCmdLineParameter; 335 tmpSplittedCmdLine := TStringList.Create;336 tmpRc := splitCmdLineParameter(tmpCmdLine, tmpSplittedCmdLine);337 334 338 335 CmdLineParameters := TCmdLineParameters.Create; 339 CmdLineParameters.parseCmdLine(tmpSplittedCmdLine); 340 341 tmpSplittedCmdLine.Destroy; 336 CmdLineParameters.parseCmdLine(tmpCmdLine); 342 337 343 338 ExistingWindow := FindExistingWindow; … … 355 350 WinSetFocus( HWND_DESKTOP, ExistingWindow ); 356 351 357 if CmdLineParameters.getTopics <> '' then 352 // if CmdLineParameters.getTopics <> '' then 353 if not CmdLineParameters.getSearchFlag AND not CmdLineParameters.getGlobalSearchFlag then 358 354 begin 359 355 PostNewViewTextMessage( ExistingWindow, 360 356 NHM_SEARCH, 361 CmdLineParameters.get Topics);362 end; 363 364 if CmdLineParameters.getGlobalSearch TextFlag then357 CmdLineParameters.getSearchText); 358 end; 359 360 if CmdLineParameters.getGlobalSearchFlag then 365 361 begin 366 362 PostNewViewTextMessage( ExistingWindow, 367 363 NHM_GLOBAL_SEARCH, 368 CmdLineParameters.get GlobalSearchText );364 CmdLineParameters.getSearchText ); 369 365 end; 370 366 -
trunk/NewView/StringUtilsUnit.pas
r35 r43 12 12 Classes; 13 13 14 TYPE 14 const 15 StrCR = chr(13); 16 StrLF = chr(10); 17 StrCRLF = StrCR + StrLF; 18 19 20 TYPE 15 21 TSerializableStringList = class 16 22 private … … 27 33 end; 28 34 35 TYPE 36 TSetOfChars = set of char; 37 29 38 // prefices all occurences of one of the chars in aStringWithChars with anEscape char 30 39 // if the escapeChar itself is found, then it is doubled 31 Function escapeAllCharsBy(Const aReceiver: String; const aStringWithChars: String; const anEscapeChar: char): String; 40 Function StrEscapeAllCharsBy(Const aReceiver: String; const aSetOfChars: TSetOfChars; const anEscapeChar: char): String; 41 42 // Extract all fields in a String given a set of delimiter characters and 43 // an optional escape character usable to escape field delimits. 44 // Example: 45 // StrExtractStrings('1x2x3\x4', "x", '\') -> 46 // returns 4 strings: "1", "", "2" and "3x4" 47 Procedure StrExtractStrings(Var aResult : TStringList; Const aReceiver: String; const aSetOfChars: TSetOfChars; const anEscapeChar: char); 48 49 // removes all occurences of char from aSetOfChars from the beginning 50 // end the end of a String. 51 Function StrTrimChars(const aReceiver: String; const aSetOfChars: TSetOfChars): String; 52 53 // removes all blanks from beginning and end 54 Function StrTrim(const aReceiver: String): String; 55 56 // returns true if the String ends with the provides one 57 // this is case SENSITIVE 58 Function StrEndsWith(const aReceiver: String; const anEndString: String): Boolean; 59 60 // returns true if the String ends with the provides one 61 // this is case INsensitive 62 Function StrEndsWithIgnoringCase(const aString: String; const anEndString: String): Boolean; 63 32 64 33 65 Implementation … … 71 103 begin 72 104 if (i > 0) then result := result + '&'; 73 result := result + escapeAllCharsBy(stringList[i], '&', '\');105 result := result + StrEscapeAllCharsBy(stringList[i], ['&'], '\'); 74 106 end; 75 107 end; … … 77 109 78 110 PROCEDURE TSerializableStringList.readValuesFromSerializedString(const aSerializedString : String); 111 Begin 112 if (length(aSerializedString) < 1) then exit; 113 114 stringList.destroy; 115 stringList := TStringList.Create; 116 StrExtractStrings(stringList, aSerializedString, ['&'], '\'); 117 end; 118 119 120 // ---------------------------------------------------------- 121 122 123 Function StrEscapeAllCharsBy(Const aReceiver: String; const aSetOfChars: TSetOfChars; const anEscapeChar: char): String; 124 Var 125 i : Integer; 126 tmpChar : Char; 127 Begin 128 Result := ''; 129 130 for i := 1 To length(aReceiver) do 131 begin 132 tmpChar := aReceiver[i]; 133 134 if (tmpChar = anEscapeChar) or (tmpChar IN aSetOfChars) then 135 result := result + anEscapeChar + tmpChar 136 else 137 result := result + tmpChar; 138 end; 139 end; 140 141 142 Procedure StrExtractStrings(Var aResult: TStringList; Const aReceiver: String; const aSetOfChars: TSetOfChars; const anEscapeChar: char); 79 143 Var 80 144 i : Integer; 81 145 tmpChar,tmpNextChar : Char; 82 146 tmpPart: String; 83 begin 84 if (length(aSerializedString) < 1) then exit; 85 86 stringList.destroy; 87 stringList := TStringList.Create; 147 Begin 148 if (length(aReceiver) < 1) then exit; 149 88 150 tmpPart := ''; 89 151 90 152 i := 1; 91 while i <= length(a SerializedString) do92 begin 93 tmpChar := a SerializedString[i];94 if i < length(a SerializedString) then95 tmpNextChar := a SerializedString[i+1]153 while i <= length(aReceiver) do 154 begin 155 tmpChar := aReceiver[i]; 156 if i < length(aReceiver) then 157 tmpNextChar := aReceiver[i+1] 96 158 else 97 159 tmpNextChar := #0; 98 160 99 if (tmpChar = '\') and (tmpNextChar = '\') then161 if (tmpChar = anEscapeChar) and (tmpNextChar = anEscapeChar) then 100 162 begin 101 tmpPart := tmpPart + '\';163 tmpPart := tmpPart + anEscapeChar; 102 164 i := i + 2; 103 165 end 104 166 else 105 if (tmpChar = '\') and (tmpNextChar = '&') then167 if (tmpChar = anEscapeChar) and (tmpNextChar IN aSetOfChars) then 106 168 begin 107 tmpPart := tmpPart + '&';169 tmpPart := tmpPart + tmpNextChar; 108 170 i := i + 2; 109 171 end 110 172 else 111 if (tmpChar = '&') then173 if (tmpChar IN aSetOfChars) then 112 174 begin 113 stringList.add(tmpPart);175 aResult.add(tmpPart); 114 176 tmpPart := ''; 115 177 i := i + 1; … … 121 183 end; 122 184 end; 123 stringList.add(tmpPart); 124 end; 125 126 // ---------------------------------------------------------- 127 128 Function escapeAllCharsBy(Const aReceiver: String; const aStringWithChars: String; const anEscapeChar: char): String; 129 Var 130 i : Integer; 131 tmpChar : Char; 132 Begin 133 Result := ''; 134 135 if (length(aStringWithChars) > 0) then 136 begin 137 for i := 1 To length(aReceiver) do 185 aResult.add(tmpPart); 186 end; 187 188 189 Function StrTrimChars(const aReceiver: String; const aSetOfChars: TSetOfChars): String; 190 Var 191 i : Longint; 192 j : Longint; 193 Begin 194 i := 1; 195 while i < Length(aReceiver) do 196 begin 197 if aReceiver[i] in aSetOfChars then 198 inc(i) 199 else 200 break; 201 end; 202 203 j := Length(aReceiver); 204 while j >= i do 205 begin 206 if aReceiver[j] in aSetOfChars then 207 dec(j) 208 else 209 break; 210 end; 211 212 result := Copy(aReceiver, i, j-i+1); 213 end; 214 215 216 Function StrTrim(const aReceiver: String): String; 217 Begin 218 result := StrTrimChars(aReceiver, [' ']); 219 end; 220 221 222 Function StrEndsWith(const aReceiver: String; const anEndString: String): Boolean; 223 Var 224 tmpStringPos : Longint; 225 tmpMatchPos : Longint; 226 Begin 227 tmpStringPos := length(aReceiver); 228 tmpMatchPos := length(anEndString); 229 230 if tmpMatchPos > tmpStringPos then 231 begin 232 result := false; 233 exit; 234 end; 235 236 while tmpMatchPos > 0 do 237 begin 238 if aReceiver[tmpStringPos] <> anEndString[tmpMatchPos] then 138 239 begin 139 tmpChar := aReceiver[i]; 140 141 if ((tmpChar = anEscapeChar) or (pos(tmpChar, aStringWithChars) > 0)) then 142 result := result + anEscapeChar + tmpChar 143 else 144 result := result + tmpChar; 240 result := false; 241 exit; 145 242 end; 146 end; 243 dec(tmpMatchPos); 244 dec(tmpStringPos); 245 end; 246 247 result := true; 248 end; 249 250 251 Function StrEndsWithIgnoringCase(const aReceiver: String; const anEndString: String): Boolean; 252 Var 253 tmpStringPos : Longint; 254 tmpMatchPos : Longint; 255 Begin 256 tmpStringPos := length(aString); 257 tmpMatchPos := length(anEndString); 258 259 if tmpMatchPos > tmpStringPos then 260 begin 261 result := false; 262 exit; 263 end; 264 265 while tmpMatchPos > 0 do 266 begin 267 if upcase(aString[tmpStringPos]) <> upcase(anEndString[tmpMatchPos]) then 268 begin 269 result := false; 270 exit; 271 end; 272 dec(tmpMatchPos); 273 dec(tmpStringPos); 274 end; 275 276 result := true; 147 277 end; 148 278
Note:
See TracChangeset
for help on using the changeset viewer.