[이노 설정] 문자열의 목록은, 경우에 유용 문서의 긴 목록을 처리합니다

https://wiki.freepascal.org/TStringList-TStrings_Tutorial

TStringList를-TStrings를 자습서

TStringList를

TStringList를 (또는 상위 TStrings를는 ) 훨씬 공상 동적 어레이 또는 문자열의 집합 (문자열 세트가 FPC에 불가능) 같다. 프로그래밍 내가 당신에게 기본적인 TStringList를 사용을 가르 칠려고 할 때 유용 많이 올 것이다!

간단한 예

프로그램 StrList;
{$ 모드 objfpc}
사용
 클래스, SysUtils와;
했다
  STR : TStringList를;
시작
  STR : = TStringList.Create ; 이 클래스 (또는 대부분의 클래스)를 사용하는 경우 //이 필요
  Str.Add ( '일부 문자열!');
  경우 Writeln (+ 된 IntToStr (Str.Count) + '문자열 (들).' '는 stringlist 지금이');
  Readln;
  Str.Free; //이 stringlist 인스턴스에서 사용하는 메모리를 해제
종료.

이 만들고 stringlist 한 문자열을 추가하는 간단한 콘솔 프로그램입니다. 이제 여기에 당신이 알아야 할 몇 가지 사항입니다 :

만들기 - 수정하기위한 문자열 목록을 생성합니다. 당신이 사용하는 경우 작성 , 나중에해야 늘린 을하고 소요되는 메모리를 해제. 그렇지 않은 경우, 프로그램이 충돌하지 않지만 그것이 점유 모든 메모리 해제되지 않습니다 메모리 누수가.

카운트 -이 속성은 목록에서 문자열의 수에 대한 카운터입니다.

추가 -이 방법은 당신이 stringlist 한 문자열을 추가 할 수 있습니다. 그것은 반환하는 기능입니다 색인 문자열. 카운터가 도움이되는 곳이다.

삭제 - stringlist에서 문자열을 삭제합니다. 그냥 당신이 단순히 입력 문자열을 알고, 당신은 입력 문자열의 인덱스를 가지고있다. 마찬가지로 나는 말했다 : 그것은 멋진 동적 배열 같다.

같이 IndexOf는 - 목록에있는 문자열의 인덱스를 반환합니다. 이 발견되지 않는 경우는 -1을 돌려줍니다.

지우기 - 목록이 삭제됩니다.

확장 예

어떻게 더 육즙 예에 대해, 응?

프로그램 StrList2;
{$ 모드 ObjFPC}
사용
클래스, SysUtils와;

했다
  STR : TStringList를;
  S : 문자열;
  카운터 : 정수;
시작
  STR : = TStringList.Create;
  경우 Writeln ( '문자열 목록 테스트');
  반복
    경우 Writeln은 ( '문자열)를 추가 중지 (유형 EXIT를 추가 할 문자열을 입력합니다');
    Readln (S); 
    경우 (S = 'EXIT')을 
      단절; // 루프를 종료
    
    경우 (S <> ')
    시작
      카운터 = Str.Add (S);
      경우 Writeln ( '문자열'+ S +는 '추가했다!');
      경우 Writeln ( '지수는 다음과 같습니다'+ 된 IntToStr (카운터)); // 카운터는 항상 추가 된 마지막의 인덱스가됩니다
    종료 
    그밖에 
    시작
      경우 Writeln은 ( '데이터가 입력되지 ...');
    종료;
  (S = 'EXIT')까지;
  경우 Writeln ( '는 TStringList를 내용 :'+ Str.CommaText);
  Str.Free; 다시 메모리를 해제 //
종료.

그러나, 당신은 항상 사용해야 가능한 메모리 누수를 방지하기 위해 시도를 - 마지막으로 당신이 뭔가를 얻을 수 있도록, 이에 대한 가능한 차단 :

했다
  SLIST : TStringList를;

...

SLIST = TStringList.Create;
시험
  ...
  // 당신의 stringlist와 함께 일을  
  ...
드디어
  다음 할당 (SLIST)의 경우
    FreeAndNil (LISP);
종료;
//이 완벽하게 작동 stringlist의 더 더블 창조는 ... 무료 코멘트 [email protected]에 보낼 수 없습니다
함수 theStringList : TStringList를;
했다
 J : 정수;
시작
  결과 : = TStringList.Create;
  위한 J = 0 (10)를 수행하기 위해서는
    result.add (된 IntToStr (J));
종료;

절차 발신자;
했다
  SL : TStringList를;
  K : 정수;
시작
  SL = theStringList;
  K에 대한 : PRED에 = 0 (SL.Count) 할
    경우 Writeln (SL [K]);
  다음 할당 (SL) 만약
    SL.Free;
종료;

와 구분 된 문자열에서 변환

아래의 코드는 4 개 원소 ( '1', '2', '3'과 '4')을 함유하는 stringlist 될 것이다;

절차 샘플;
했다
    MyStringList : TStringList를 = 무기 호;
시작
     MyStringList = TStringList.create;
     MyStringList.Delimiter = ';';
     MyStringList.DelimitedText = '1, 2, 3, 4';
     MyStringList.free;
종료;


각각 다음 코드는 구분 된 문자열로 stringlist ( '; 2; 3; 1 ~ 4')을 조립합니다 :

SAMPLE2을 기능 : 문자열;
했다
    MyStringList : TStringList를 = 무기 호;
시작
     MyStringList = TStringList.create;
     MyStringList.Delimiter = ';';
     MyStringList.Add ( '1');
     MyStringList.Add ( '2');
     MyStringList.Add ( '3');
     MyStringList.Add (4 '');
     결과 : = MyStringList.DelimitedText;
     MyStringList.free;
종료;


Delimter가 문자, 유의 하지 문자열! 당신의 분리, 당신은 ( '1', '2', '3'과 '4') 4 개 요소를 포함하는 stringlist를 얻기 위해, 아래의 코드를 사용할 수 있습니다 ( "N \"예를 들어) 문자열 인 경우 :

절차 샘플;
했다
    MyStringList : TStringList를 = 무기 호;
시작
     MyStringList = TStringList.create;
     MyStringList.text = StringReplace와 ( '1 \ N2 \ N3 \ N4', '\ n을'Lineending [rfReplaceAll, rfIgnoreCase]);
     MyStringList.free;
종료;

부사장은 반대, 다음 함수가 반환됩니다 "1 \ N2 \ N3"

기능 샘플 : 문자열;
했다
    MyStringList : TStringList를 = 무기 호;
시작
     MyStringList = TStringList.create;
     MyStringList.SkipLastLineBreak은 : 진정한 =;
     MyStringList.add ( '1');
     MyStringList.add ( '2');
     MyStringList.add ( '3');
     결과 : = StringReplace와 (MyStringList.Text, Lineending '\ n을'[rfReplaceAll, rfIgnoreCase]);
     MyStringList.free;
종료;

파일 처리

다음 TStringList를 사용하는 경우에는이 개 파일 처리 절차가 SaveToFileLoadFromFile을 . SavetoFile은 파일 목록에있는 모든 문자열을 저장합니다. LoadFromFile 파일을 열고 문자열 목록 문자열로 파일 데이터를 추가합니다.

프로그램 StrListFile;
{$ 모드 objfpc}
사용
 클래스, SysUtils와;

했다
  STR : TStringList를;
시작
  STR : = TStringList.Create;
  시험
    Str.LoadFromFile ( 'SomeFile.txt');
    Str.Add ( '안녕하세요');
    Str.SaveToFile ( 'SomeFile.txt');
  드디어
    Str.Free;
  종료;
종료.

당신은, 파일을 열고 그것을 편집하고 그것이 있었다 오른쪽 다시 저장!

동적 문자열 배열 비교

TStringList를 단순히 동적 문자열 배열의 객체 지향 버전이다. 일부 방법은 아날로그 있습니다 :

조작 문자열의 배열 TStringList를
변수 선언 StringList : 문자열의 배열; StringList : TStringList를;
초기화 기본 생성자 StringList = TStringList.Create
세트 크기 SetLength를 (StringList, X); StringList.Size : =의 X;
크기를 가져옵니다 X = 길이 (StringList); X : = StringList.Count;
아이템 추가 SetLength를 (StringList, 길이 (StringList) + 1); StringList [길이 (StringList) - 1] = X를; StringList.Add (X);
항목을 삭제 I의 경우 : 길이 = 지수 (StringList) - 2- StringList을 [I] = StringList [I + 1]; SetLength를 (StringList, 길이 (StringList) - 1); StringList.Delete (지수);
모든 항목을 삭제 SetLength를 (StringList, 0); StringList.Clear;
마무리 암시 적 소멸자 StringList.Free;

그러나 TStringList를 이러한 동적 배열은 기본적인 구조보다 훨씬 더 많은 기능을 제공한다.

계속 공부하다

TStringList를 다른 많은 흥미로운 기능을 가지고 있습니다 :

  1. 그것은 당신이 문자열을 정렬 할 수 있습니다
  2. 그것은 당신 만의 고유 문자열로 목록을 제한 할 수 있습니다
  3. 당신은 사용하여 하나의 문자열로 모든 문자열의 텍스트를 얻을 수있는 텍스트 속성을.
  4. 당신은 문자열 옆에있는 객체 또는 다른 데이터를 저장할 수 있습니다

당신은 모든 다른 프로 시저, 함수 및 속성을 배울 수 있습니다. 참조 TStringList를 문서 ... 또는 나사로의 도움을.

... 당신은 당신이 기분 경우이 튜토리얼을 확장하는 것 같아서.

또한보십시오

추천

출처www.cnblogs.com/liujx2019/p/11698216.html