Q&A

  • 텍스트화일에서 맨앞에 문자하나 추가하는 방법?
화일을 열어서 원하는 줄의 맨앞에 #문자 를 추가하려고 합니다.

예를 들면 원래 화일이

1

123

12

1235

123

이 상태이면 2-4번째 줄에 #을 표시하고 싶다하면

1

#123

#12

#1235

123

이런 방식으로요... TStringList를 사용하면 쉽지만 그 방법외에 다른 방법을 찾거든요.

그럼 부탁드립니다.

1  COMMENTS
  • Profile
    어린왕자 2000.10.20 02:12
    영원한 델초보 어린왕자입니다..

    저두 여기서 어떤 고수님한테 한수 배웠습니다..검색해보시면 나올껀데..

    소스입니다..

    즐코하셔염..



    procedure DeleteHeader(CurDocName:String); // 헤더자르기(헤더크기수+헤더내용)

    var

    FF: file;

    Data: array of Byte;

    Name:String;

    DataSize,HeaderSize: Integer;

    begin



    AssignFile(FF, curDocName);

    try

    Reset(FF, 1);

    BlockRead(FF,HeaderSize,sizeof(Headersize));

    SetLength(Name,Headersize);

    DataSize := FileSize(FF)-Headersize-sizeof(Headersize) ;

    // 원본 파일 크기 구하기

    SetLength(Data, DataSize);

    BlockRead(FF,Name[1],Headersize);

    BlockRead(FF, Data[0], DataSize);

    Seek(FF, 0); // 처음으로 돌아온 후

    BlockWrite(FF, Data[0], DataSize); // 원본 파일을 쓰고

    Seek(FF, DataSize);

    Truncate(FF); // 원본 파일 크기만큼만 저장한다.

    finally

    SetLength(Data, 0); // Data변수 메모리 해제

    CloseFile(FF);

    end;

    end;



    procedure InsertHeader(CurdocName:String); // 헤더쓰기(헤더크기수+헤더내용)



    var

    FF: file;

    Data: array of Byte; // 원본 파일 데이터

    HeaderSize,DataSize: Integer; // 원본 파일 크기

    str:String;



    begin

    AssignFile(FF, CurDocName);

    Reset(FF, 1);

    try

    DataSize := FileSize(FF); // 원본 파일 크기 구하기

    SetLength(Data, DataSize); // Data변수 메모리 할당

    BlockRead(FF, Data[0], DataSize); // 원본 파일 읽기



    str:=Pchar('저장할스트링');

    Headersize:=length(str);

    Seek(FF, 0);

    BlockWrite(FF,Headersize,sizeof(Headersize));

    BlockWrite(FF,str[1],Headersize); // 헤더 쓰기

    BlockWrite(FF, Data[0], DataSize); // 원본 파일 쓰기

    finally

    SetLength(Data, 0); // Data변수 메모리 해제

    CloseFile(FF); // 파일 닫기

    end;

    end;







    왕초보 wrote:

    > 화일을 열어서 원하는 줄의 맨앞에 #문자 를 추가하려고 합니다.

    > 예를 들면 원래 화일이

    > 1

    > 123

    > 12

    > 1235

    > 123

    > 이 상태이면 2-4번째 줄에 #을 표시하고 싶다하면

    > 1

    > #123

    > #12

    > #1235

    > 123

    > 이런 방식으로요... TStringList를 사용하면 쉽지만 그 방법외에 다른 방법을 찾거든요.

    > 그럼 부탁드립니다.