Changeset 109


Ignore:
Timestamp:
Apr 25, 2007, 10:25:56 AM (18 years ago)
Author:
RBRi
Message:

updates for AnsiString usage

Location:
trunk/NewView
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/NewView/CmdLineParameterUnit.pas

    r93 r109  
    3636     TCmdLineParameters = class
    3737     private
    38        commandLine : String;
     38       commandLine : AnsiString;
    3939       showUsageFlag : boolean;
    4040       searchFlag : boolean;
     
    4646       windowPosition: TWindowPosition;
    4747       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;
    5454       debugEnabled : boolean;
    5555
    5656       FUNCTION handleSwitchWithValue(const aSwitchString : String; const aSwitch : String; var aValue : String) : Boolean;
    5757       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;
    6060
    6161     public
     
    7171       PROPERTY getWindowPosition : TWindowPosition read windowPosition;
    7272       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;
    7676
    7777       PROCEDURE writeDetailsTo(aStrings : TStrings);
    7878       PROCEDURE logDetails;
    79        PROCEDURE parseCmdLine(aCmdLineString : String);
     79       PROCEDURE parseCmdLine(aCmdLineString : AnsiString);
    8080       FUNCTION getOwnHelpFileName: String;
    8181  end;
     
    8383  // returns a string containing the whole
    8484  // 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);
    8688
    8789
     
    162164
    163165
    164   Procedure TCmdLineParameters.parseCmdLine(aCmdLineString : String);
     166  Procedure TCmdLineParameters.parseCmdLine(aCmdLineString : AnsiString);
    165167  var
    166168    tmpState : (WHITESPACE, QUOTE, SWITCH, FILENAME, TEXT);
     
    168170    tmpQuoted : boolean;
    169171    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;
    174176    tmpEnvDebug : String;
    175177  begin
     
    411413
    412414    // remove blanks
    413     fileNames := StrTrim(getParsedFileNames);
    414     searchText := StrTrim(getParsedSearchText);
     415    fileNames := AnsiStrTrim(getParsedFileNames);
     416    searchText := AnsiStrTrim(getParsedSearchText);
    415417
    416418    if getGlobalSearchFlag
     
    438440    then
    439441    begin
    440       searchText := StrTrimChars(searchText, ['"']);
     442      searchText := AnsiStrTrimChars(searchText, ['"']);
    441443    end;
    442444
     
    618620
    619621
    620   FUNCTION nativeOS2GetCmdLineParameter : STRING;
     622  PROCEDURE nativeOS2GetCmdLineParameter(aResult : AnsiString);
    621623  VAR
    622624    tmpPtib : PTIB;       // thread information block
    623625    tmpPpib : PPIB;       // process information block
    624626    tmpCmd  : PCHAR;
    625     tmpResult : PCHAR;
     627    tmpParams : PCHAR;
     628    tmpResult : AnsiString;
    626629
    627630  BEGIN
     
    633636    // skip to the next null terminated string
    634637    // 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));
    637641  END;
    638642END.
  • trunk/NewView/unittests/CmdLineParameterUnitTests.pas

    r82 r109  
    15081508
    15091509
     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
    15101553  FUNCTION getCmdLineParameterUnitTests : TList;
    15111554  BEGIN
     
    15931636    result.add(@testParseCmdLine_SwitchAndFileQuoted);
    15941637    result.add(@testParseCmdLine_SwitchAndFileAndTextQuoted);
     1638
     1639    result.add(@testParseCmdLine_ReallyLong);
     1640
    15951641  END;
    15961642
Note: See TracChangeset for help on using the changeset viewer.