2011-09-01 10 views
3

디스크의 파일에서 텍스트 파일을 메모리의 배열로 읽는 방법은 무엇입니까?배열로 텍스트 파일 읽기

또한, 나는 ReadLn는 첫 번째 라인을 보여줍니다 사용주의 (이 ReadLn 때문에, 가지 분명한 것 같다,하지만 어떻게 내가 전체 텍스트 문서를 읽고 가겠어요?)

+0

사용자가 "읽기"를 의미 할 때 "쓰기"사용이 혼란 스럽기 때문에 편집되었습니다. –

+0

코더 101; 수락 된 대답은 List라고하는 것을 사용하고 있으며 이것은 올바른 방법이라는 것을 유의하십시오. 그러나 "배열"이라는 단어를 사용했기 때문에 배열과 목록은 델파이의 다른 (그러나 비슷한) 것들입니다. –

+0

가능한 답변 http://stackoverflow.com/questions/4193483/how-to-save-string-into-text-files-in-delphi (허용되는 답변 기준) –

답변

7
function ReadFile(const FileName: string): string; 
var 
    Strings: TStringList;  
begin 
    Strings := TStringList.Create; 
    try 
    Strings.LoadFromFile(FileName); 
    Result := Strings.Text; 
    finally 
    Strings.Free; 
    end; 
end; 

을 파일의 반환 인덱싱 할 수있는 문자열의 내용이므로 배열로 간주 될 수 있습니다.

아니면 당신은 그냥 직접 문자열 목록 사용하는 것이 가장 쉬운 방법이 경우 문자열의 배열이 아닌 문자의 배열, 원하는 : 2010 당신이 사용할 수 델파이 XE로 시작

var 
    Strings: TStringList;  
... 
    Strings := TStringList.Create; 
    try 
    Strings.LoadFromFile(FileName); 
    //can now access Strings[0], Strings[1], ..., Strings[Strings.Count-1] 
    finally 
    Strings.Free; 
    end; 
+0

감사합니다. – coder101

+3

파일이 아닙니다. 정말 좋은 이름입니다.하지만 델파이에서 예약어이기 때문에.

+0

@Rudy Er 감사합니다. 프로 시저에도 반환 값이 없습니다! –

7

IOUtils.TFile.ReadAllLines 한 줄의 코드에서 텍스트 파일의 내용을 읽는 기능.

class function ReadAllLines(const Path: string): TStringDynArray; 
class function ReadAllLines(const Path: string; const Encoding: TEncoding): TStringDynArray; overload; static; 
+3

이것은 D2010에도 있습니다. 놀랍게도, 텍스트를 문자열 목록에로드 한 다음 SetLength (Result, Length (Result + 1)) 루프를 사용하여 동적 배열을 채 웁니다! –

+0

@David는 .Net에서 동적 배열을 만드는 방법과 비슷합니다. 목록을 만들어 배열로 변환하십시오! 그 방법으로 어떤 이점이 있는지 궁금합니다 ... – Sam

+1

@sam 여기서는별로 좋지 않은 성능 특성을 가지고 있습니다. –