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를 사용하는 경우에는이 개 파일 처리 절차가 SaveToFile 및 LoadFromFile을 . 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를 다른 많은 흥미로운 기능을 가지고 있습니다 :
- 그것은 당신이 문자열을 정렬 할 수 있습니다
- 그것은 당신 만의 고유 문자열로 목록을 제한 할 수 있습니다
- 당신은 사용하여 하나의 문자열로 모든 문자열의 텍스트를 얻을 수있는 텍스트 속성을.
- 당신은 문자열 옆에있는 객체 또는 다른 데이터를 저장할 수 있습니다
당신은 모든 다른 프로 시저, 함수 및 속성을 배울 수 있습니다. 참조 TStringList를 문서 ... 또는 나사로의 도움을.
... 당신은 당신이 기분 경우이 튜토리얼을 확장하는 것 같아서.