Q&A

  • txt파일명 부여하기..
TXT파일을 만들어 폴더에 넣어줄때..
그 폴더에 이름이 똑같은 TXT파일이 있을땐..
음. 예를 들어...
오널날짜..로 TXT파일명을 부여한다 할때..

1A0709.TXT <------ 이거와 같이 저장이 되었습니다..
근데.. 똑같은 날짜에 TXT파일을 만들 경우..
2A0709.TXT 라고 1값씩을 더해줘서 파일명을 주려면 어케해야 하나여??
3A0709.TXT....

    xsfname := 'C:신고납 프로젝트BarReaderTXTDATA' + '1A' + copy(formatdatetime('yyyymmdd', DateTimePicker1.datetime),5,2) + copy(formatdatetime('yyyymmdd', DateTimePicker1.datetime),7,2)+ '.txt';

이부분을 어떻게 고쳐야 하는지.. 흐미..
아시는분~~~~~~~~~~~~~
6  COMMENTS
  • Profile
    조범준 2002.07.10 12:14

    function RenameFile(const OldName, NewName: string): Boolean;

    Description

    RenameFile attempts to change the name of the file specified by OldFile to NewFile. If the operation succeeds, RenameFile returns True. If it cannot rename the file (for example, if a file called NewName already exists), it returns False.
  • Profile
    최석기 2002.07.10 00:58
    뭐 방법이야 여러가지 있겠지만 재귀호출을 이용한 방법입니다.

    참고하세요.

    //PreFix는 최초 시작 숫자
    //FileName는 생성시키려는 파일명의 변경괴는 숫자부분을 제외한 파일명
    function TForm1.MakeFileName(PreFix: integer; FileName: string): string;
    begin
      if FileExists(ExtractFilePath(FileName) + IntToStr(PreFix) + ExtractFileName(FileName)) then begin
        //해당 폴더에 파일 존재시 재귀함수 호출
        Inc(PreFix);
        Result := MakeFileName(PreFix, FileName);
      end
      else
        Result := ExtractFilePath(FileName) + IntToStr(PreFix) + ExtractFileName(FileName);
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
      filename: string;
    begin
      //테스트 코딩
      //폴더에 순서대로 파일을 만듬.
      filename := MakeFileName(1,'d:Work' + 'A' + FormatDateTime('mmdd',now) + '.txt');
      if not FileExists(filename) then
        FileCreate(filename);
    end;

  • Profile
    짱아 2002.07.10 01:14
    저겨... 좀더 구체적으로 말씀해 주시면 안되염??
    이해가 안되염.. ㅜ.ㅡ
       xsfname := 'C:신고납 프로젝트BarReaderTXTDATA' + '1A' + copy(formatdatetime('yyyymmdd', DateTimePicker1.datetime),5,2) + copy(formatdatetime('yyyymmdd', DateTimePicker1.datetime),7,2)+ '.txt';
    위에 제가 적은것이 파일명을 (날짜로) 임의로 부여 한 값이거든여..
    '1A' 이값을 강제로 임의로 줬었는데...
    어케 해야 할지..

  • Profile
    최석기 2002.07.10 01:26
    이런 식으로 제가 만들어 드린 함수를 태우시면 자동으로 변경되는 파일 이름을 얻으실 수 있습니다.

    xsfname := MakeFileName(1,'C:신고납 프로젝트BarReaderTXTDATA' + 'A' + FormatDateTime('mmdd',now) + '.txt');

    구체적으로 설명하기 힘드네요..

    실제 함수 구현은 도움말 같은걸 찾아보시죠.


  • Profile
    짱아 2002.07.10 02:48
    아래와 같이 했는데...  I/O error 32 에러가 나염..

    procedure TfrmMnuA1.BtnsaveClick(Sender: TObject);
    var
    xtout : textfile;
    xsfname,xsline,xstmp : string;
    i,j : integer;
    pl : string;
    begin

    qryData.close;
    qryData.open;

      if qryData.Active = false then
         begin
         Application.MessageBox('저장할 내용이 없습니다.','경고',MB_OK);
         exit;
         end;
      qryData.First;
      if qryData.EOF = true then
         begin
         Application.MessageBox('저장할 내용이 없습니다.','경고',MB_OK);
         exit;
         end;

    // for (p2 = 1; p2 > p1; p2++) do

    //if FileExists(pl + 'A' + copy(formatdatetime('yyyymmdd', DateTimePicker1.datetime),5,2) + copy(formatdatetime('yyyymmdd', DateTimePicker1.datetime),7,2)+ '.txt') then
    //begin
    //   filename := MakeFileName(1,'d:Work' + 'A' + FormatDateTime('mmdd',now) + '.txt');
    //  if not FileExists(filename) then
    //    FileCreate(filename);

        xsfname := MakeFileName(1,'C:신고납 프로젝트BarReaderTXTDATA' + 'A' + copy(formatdatetime('yyyymmdd', DateTimePicker1.datetime),5,2) + copy(formatdatetime('yyyymmdd', DateTimePicker1.datetime),7,2)+ '.txt');
       if not FileExists(xsfname) then
        FileCreate(xsfname);

         try
         AssignFile(xtout, xsfname );
         Rewrite(xtout);
         xsline := '';
         if comparestr(copy(xsfname,length(xsfname)-2,3),'TXT') = 0 then
           while qryData.EOF = false do
           begin
             for i:=0 to qryData.FieldCount - 1 do
               begin
                 if i <> qryData.FieldCount - 1 then
                   xsline := xsline + qryData.Fields[i].AsString + ','
                 else
                   xsline := xsline + qryData.Fields[i].AsString
               end;
             writeln(xtout,xsline);
             qryData.Next;
           end
         else
           while qryData.EOF = false do
           begin
             for i:=0 to qryData.FieldCount - 1 do
               begin
                   xsTmp := qryData.Fields[i].AsString;
                   j := qryData.Fields[i].Size;
                   xsTmp := MakeTxtDB(xsTmp,j);
                   xsline := xsline + xstmp;
               end;
             writeln(xtout,xsline);
             qryData.Next;
           end;

         CloseFile(xtout);

         except
         begin
           MessageDlg('파일 생성에 실패하였습니다.',mtError, [mbOk],0);
           Exit;
         end;
        end;
        MessageDlg('저장이 성공적으로 이루어졌습니다..  '#13#13+
                      '파일['+xsfname+']을 생성 하였습니다.',mtInformation, [mbOk],0);

        with DELQRY do
        begin
        sql.clear;
        sql.add(' delete from jumin.db           ');
        sql.add('  where NAPYMD = :pNAPYMD      ');
        parambyname('pNAPYMD').asstring := formatdatetime('yyyymmdd', DateTimePicker1.datetime);
        ExecSQL;
        end;
        user_clear;

    end;


    //PreFix는 최초 시작 숫자
    //FileName는 생성시키려는 파일명의 변경괴는 숫자부분을 제외한 파일명
    function TfrmMnuA1.MakeFileName(PreFix: integer; xsfname: string): string;   //PreFix
    begin
      if FileExists(ExtractFilePath(xsfname) + IntToStr(PreFix) + ExtractFileName(xsfname)) then begin
        //해당 폴더에 파일 존재시 재귀함수 호출
        Inc(PreFix);
        Result := MakeFileName(PreFix, xsfname);
      end
      else
        Result := ExtractFilePath(xsfname) + IntToStr(PreFix) + ExtractFileName(xsfname);
    end;


  • Profile
    장태원 2002.07.10 00:43

    loop 를 돌리셔서

    파일명을 먼저 변수로 처리하여 파일이 있는지 없는지를 먼저 비교합니다.

    없으면 저장하면되죠.





    • 서기원
      2002.07.10 20:53
      pas파일 자체속성에 Read only로 설정되어 있기 때문입니다. 아마도 CD-Rom에 있던 샘플을 열어보신 것 같...
    • 신연근
      2002.07.10 22:36
    • 홍성락
      2002.07.10 21:29
    • KDDG_ZZOM
      2002.07.10 20:18
    • ㄴ ㅏ ㅁ ㅑ
      2002.07.10 20:34
    • KDDG_ZZOM
      2002.07.10 20:37
    • ㄴ ㅏ ㅁ ㅑ
      2002.07.10 20:59
    • KDDG_ZZOM
      2002.07.10 21:15
    • • • •
    • 김세형
    • 2002.07.10 20:15
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이원상
    • 2002.07.10 20:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.07.10 23:33
      안녕하세요. 최용일입니다. DLL 새로 만들면 여러줄에 걸친 주석있잖아요. 거기에 해답이 있는데... ...
    • 이정관
      2002.07.10 20:01
      ShellExecute()를 사용하기 위해서는 interface 절의 uses절안에 ShellAPI을 포함시켜주세요... interf...
    • 박진감
    • 2002.07.10 19:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.07.10 21:08
      hsr///////////////////////////////////////////////////////////// 혹시? ComboBox1.ItemIndex := Comb...
    • 이정관
      2002.07.10 19:43
      DLL파일을 사용하고 있는 프로그램이 실행되어 있어서 그런거 아닌가요. 정상적인 경우라면 컴파일하면 소...
    • 호기심
    • 2002.07.10 19:24
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정관
      2002.07.10 19:47
      소스한번 올려주세요...말로만은 잘 모르겠네요... 혹 반올림 문제가 아닌지 모르겠네요.
    • 호기심
      2002.07.10 21:01
                      &nbs...
    • 원혁상
    • 2002.07.10 19:12
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.07.10 19:51
      안녕하세요. 최용일입니다. 음~ 질문만으론 정확한 상황을 잘 모르겠네요... 답변이 제대로 될른지... ...
    • 원혁상
      2002.07.10 19:57
      감사합니다..... 올라오는군여... 제가 델파이는 첨이라서 많이 헤메구 있습니다. 정말 감사 합니다. ...
    • 이정택
    • 2002.07.10 04:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김수경
      2002.07.10 19:03
      socket 관련 Buffer가 꽉 차서 그런 현상이 생긴 것 같습니다. Read Event가 발생하면 바로 읽어 내부(App...
    • 오정민
    • 2002.07.10 03:47
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 윤수아
    • 2002.07.10 02:39
    • 2 COMMENTS
    • /
    • 0 LIKES
    • YoungMan
      2002.07.10 03:28
      ㅡㅡ; 활동많이 하셔서 레벨이 올라가면 얻는 권한인듯합니다^^; 활동 많이 하셔서 이름 예쁘게하세요^^
    • 염상철
      2002.07.10 10:57
      원래 제로보드에있는기능인데~~이사이트 주인께서.. 활동 많이 하는 사람에게~~이익을 주고자.`~ 레벨로 ...
    • 이원상
    • 2002.07.10 02:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.07.10 19:43
      안녕하세요. 최용일입니다. 동적이냐 정적이냐는 DLL이 메모리에 올라가는 시점에 따라서 구별해요... ...
    • 염상철
      2002.07.10 10:32
      이사이트가..가장...알기 쉽게 설명 되있어여.. 딴데 찾을 생각 하지 마시고.. 이사이트에서..열씨미...
    • 장태원
      2002.07.10 02:11
      If 문쓰시면 되는데..ㅡㅡ; 왜 문제가 될지 그게 궁금하군요. If TE_Address1.Text <>'' Then ...
    • 최용일
      2002.07.10 02:06
      안녕하세요. 최용일입니다ㅣ string형쓰세요. 2GByte까지 데이터 저장 가능합니다... ^^ 항상 즐코하...
    • 박동호
    • 2002.07.10 01:44
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.07.10 01:52
      안녕하세요. 최용일입니다. 파라매터를 이용해보세요... Query1.SQL.Add(' insert into office(name,...
    • 박동호
      2002.07.10 02:19
      고맙습니다.
    • 장태원
      2002.07.10 00:40
      With Query1 Do Begin Close; Sql.Clear; Sql.Add(' INSERT INTO ABCTABLE(AATEXT) VALUES(:AATE...
    • 김기현
      2002.07.10 02:15
      근데 퀵리포트에서 보면..이상한 문자가 들어가 있는데... 그걸없에고 불러오고 싶은데 그건어케하는건...
    • 별볼일없는
      2002.07.10 01:26
      음냐.. 그냥 지나가다... 데이터 베이스가 그냥 스트링이라면 모르겠지만 메모에서 내용을 받아오면 그냥...
    • 짱아
    • 2002.07.09 23:03
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 조범준
      2002.07.10 12:14
      function RenameFile(const OldName, NewName: string): Boolean; Description RenameFile attempt...
    • 최석기
      2002.07.10 00:58
      뭐 방법이야 여러가지 있겠지만 재귀호출을 이용한 방법입니다. 참고하세요. //PreFix는 최초 시작 ...
    • 짱아
      2002.07.10 01:14
      저겨... 좀더 구체적으로 말씀해 주시면 안되염?? 이해가 안되염.. ㅜ.ㅡ    xsfname := 'C:...
    • 최석기
      2002.07.10 01:26
      이런 식으로 제가 만들어 드린 함수를 태우시면 자동으로 변경되는 파일 이름을 얻으실 수 있습니다. xs...
    • 짱아
      2002.07.10 02:48
      아래와 같이 했는데...  I/O error 32 에러가 나염.. procedure TfrmMnuA1.BtnsaveClick(Sen...
    • 장태원
      2002.07.10 00:43
      loop 를 돌리셔서 파일명을 먼저 변수로 처리하여 파일이 있는지 없는지를 먼저 비교합니다. 없으...