Changeset 109
- Timestamp:
- Apr 25, 2007, 10:25:56 AM (18 years ago)
- Location:
- trunk/NewView
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NewView/CmdLineParameterUnit.pas
r93 r109 36 36 TCmdLineParameters = class 37 37 private 38 commandLine : String;38 commandLine : AnsiString; 39 39 showUsageFlag : boolean; 40 40 searchFlag : boolean; … … 46 46 windowPosition: TWindowPosition; 47 47 ownerWindow : integer; 48 windowTitle : string;49 parsedFileNames : string;50 parsedRawFileNames : string;51 fileNames : string;52 parsedSearchText : string;53 searchText : string;48 windowTitle : AnsiString; 49 parsedFileNames : AnsiString; 50 parsedRawFileNames : AnsiString; 51 fileNames : AnsiString; 52 parsedSearchText : AnsiString; 53 searchText : AnsiString; 54 54 debugEnabled : boolean; 55 55 56 56 FUNCTION handleSwitchWithValue(const aSwitchString : String; const aSwitch : String; var aValue : String) : Boolean; 57 57 PROCEDURE parseSwitch(aSwitchString : String); 58 PROPERTY getParsedFileNames : string read parsedFileNames;59 PROPERTY getParsedSearchText : string read parsedSearchText;58 PROPERTY getParsedFileNames : AnsiString read parsedFileNames; 59 PROPERTY getParsedSearchText : AnsiString read parsedSearchText; 60 60 61 61 public … … 71 71 PROPERTY getWindowPosition : TWindowPosition read windowPosition; 72 72 PROPERTY getOwnerWindow : integer read ownerWindow; 73 PROPERTY getWindowTitle : string read windowTitle;74 PROPERTY getFileNames : string read fileNames;75 PROPERTY getSearchText : string read searchText;73 PROPERTY getWindowTitle : AnsiString read windowTitle; 74 PROPERTY getFileNames : AnsiString read fileNames; 75 PROPERTY getSearchText : AnsiString read searchText; 76 76 77 77 PROCEDURE writeDetailsTo(aStrings : TStrings); 78 78 PROCEDURE logDetails; 79 PROCEDURE parseCmdLine(aCmdLineString : String);79 PROCEDURE parseCmdLine(aCmdLineString : AnsiString); 80 80 FUNCTION getOwnHelpFileName: String; 81 81 end; … … 83 83 // returns a string containing the whole 84 84 // command line parametes 85 FUNCTION nativeOS2GetCmdLineParameter : String; 85 // this as function has a problem with returning an AnsiString 86 // ! you have to provide an AnsiString (normaly an empty one) 87 PROCEDURE nativeOS2GetCmdLineParameter(aResult : AnsiString); 86 88 87 89 … … 162 164 163 165 164 Procedure TCmdLineParameters.parseCmdLine(aCmdLineString : String);166 Procedure TCmdLineParameters.parseCmdLine(aCmdLineString : AnsiString); 165 167 var 166 168 tmpState : (WHITESPACE, QUOTE, SWITCH, FILENAME, TEXT); … … 168 170 tmpQuoted : boolean; 169 171 tmpCurrentChar : char; 170 tmpWhitespace : String;171 tmpQuote : String;172 tmpSwitch : String;173 tmpOwnHelpFileName : String;172 tmpWhitespace : AnsiString; 173 tmpQuote : AnsiString; 174 tmpSwitch : AnsiString; 175 tmpOwnHelpFileName : AnsiString; 174 176 tmpEnvDebug : String; 175 177 begin … … 411 413 412 414 // remove blanks 413 fileNames := StrTrim(getParsedFileNames);414 searchText := StrTrim(getParsedSearchText);415 fileNames := AnsiStrTrim(getParsedFileNames); 416 searchText := AnsiStrTrim(getParsedSearchText); 415 417 416 418 if getGlobalSearchFlag … … 438 440 then 439 441 begin 440 searchText := StrTrimChars(searchText, ['"']);442 searchText := AnsiStrTrimChars(searchText, ['"']); 441 443 end; 442 444 … … 618 620 619 621 620 FUNCTION nativeOS2GetCmdLineParameter : STRING;622 PROCEDURE nativeOS2GetCmdLineParameter(aResult : AnsiString); 621 623 VAR 622 624 tmpPtib : PTIB; // thread information block 623 625 tmpPpib : PPIB; // process information block 624 626 tmpCmd : PCHAR; 625 tmpResult : PCHAR; 627 tmpParams : PCHAR; 628 tmpResult : AnsiString; 626 629 627 630 BEGIN … … 633 636 // skip to the next null terminated string 634 637 // these are the parameters 635 tmpResult := tmpCmd + StrLen(tmpCmd) + 1; 636 result := StrPas(tmpResult); 638 tmpParams := tmpCmd + StrLen(tmpCmd) + 1; 639 640 AnsiSetString(aResult, tmpParams, StrLen(tmpParams)); 637 641 END; 638 642 END. -
trunk/NewView/unittests/CmdLineParameterUnitTests.pas
r82 r109 1508 1508 1509 1509 1510 PROCEDURE testParseCmdLine_ReallyLong; 1511 VAR 1512 tmpCmdLineString : AnsiString; 1513 tmpCmdLineParameters : TCmdLineParameters; 1514 i : integer; 1515 BEGIN 1516 tmpCmdLineString := '-s '; 1517 1518 // long file name 1519 tmpCmdLineString := tmpCmdLineString + 'LongFileName'; 1520 for i := 1 to 30 do 1521 begin 1522 tmpCmdLineString := tmpCmdLineString + '0123456789'; 1523 end; 1524 1525 // long search text 1526 tmpCmdLineString := tmpCmdLineString + ' LongSearchText'; 1527 for i := 1 to 30 do 1528 begin 1529 tmpCmdLineString := tmpCmdLineString + '0123456789'; 1530 end; 1531 1532 tmpCmdLineParameters := TCmdLineParameters.Create; 1533 tmpCmdLineParameters.parseCmdLine(tmpCmdLineString); 1534 1535 assertFalse('testParseCmdLine_ReallyLong->ShowUsageFlag', tmpCmdLineParameters.getShowUsageFlag); 1536 assertTrue('testParseCmdLine_ReallyLong->SearchFlag', tmpCmdLineParameters.getSearchFlag); 1537 assertFalse('testParseCmdLine_ReallyLong->GlobalSearchFlag', tmpCmdLineParameters.getGlobalSearchFlag); 1538 assertEqualsString('testParseCmdLine_ReallyLong', '', tmpCmdLineParameters.getLanguage); 1539 assertFalse('testParseCmdLine_ReallyLong', tmpCmdLineParameters.getHelpManagerFlag); 1540 assertEqualsInt('testParseCmdLine_ReallyLong', 0, tmpCmdLineParameters.getHelpManagerWindow); 1541 assertEqualsInt('testParseCmdLine_ReallyLong', 0, tmpCmdLineParameters.getOwnerWindow); 1542 assertEqualsString('testParseCmdLine_ReallyLong', '', tmpCmdLineParameters.getWindowTitle); 1543 1544 assertEqualsInt('testParseCmdLine_ReallyLong', 312, Length(tmpCmdLineParameters.getFileNames)); 1545 assertEqualsInt('testParseCmdLine_ReallyLong', 314, Length(tmpCmdLineParameters.getSearchText)); 1546 END; 1547 1548 1549 1550 // ---------------------------------------------------------- 1551 1552 1510 1553 FUNCTION getCmdLineParameterUnitTests : TList; 1511 1554 BEGIN … … 1593 1636 result.add(@testParseCmdLine_SwitchAndFileQuoted); 1594 1637 result.add(@testParseCmdLine_SwitchAndFileAndTextQuoted); 1638 1639 result.add(@testParseCmdLine_ReallyLong); 1640 1595 1641 END; 1596 1642
Note:
See TracChangeset
for help on using the changeset viewer.