창조유저그룹-커즈닷컴
Window close
ID :     PASS :   
   
  처음으로
  창조
  창조 소개
창조 다운로드
CUGz.com 소개
온라인 도움말
  커뮤니티
  가입인사
자유게시판
Q/A게시판
TIP/TECH
열린강좌
자주하는질문
아이디어게시판
  자료실
  소스자료실
프로그램자료실
기타자료실
명예의 전당
이미지 자료실
  지원/기타
  표준용어재정
구글 웹서치  
관리자 전용


창조 팁
- '창조' 에 관한 팁을 올리는 곳입니다. 다수의 이미지가 필요하시면 아래 '이미지 자료실' 에 업로드 후 불러와 주세요..


LIST ALL
Posted by 박재성2007-02-08 02:17:07, Hit : 6179
[등록완료] 창조만을 이용하여 파일합치고 풀기
Homepage : http://www.cyworld.com/0117614582
Post URL : http://cugz.sjworks.net/bbs/zboard.php?id=tip&no=316
강좌에 앞서 창조소개부터 해야겠습니다.
이곳에 방문해주시는 분들 대부분은 창조를 모르고 계시는분들일테니.
약간의 소개라도 해야 되겠다 싶네요 ^-^;

창조는 비주얼C++ , 비주얼베이직 , 델파이 와는 달리 오직 한글만을 이용하여
프로그래밍할 수 있도록 도와주는 언어입니다.
하지만 창조는 델파이라고도 할 수 있습니다.
그 모체가 델파이거든요.

창조를 처음접하는 분들이라면 와 이거 너무 좋다.
명령어도 한글이고 프로그램을 만드는 방법또한 쉽고 명령어 전체가
도움말 형식으로 나와있으며 예제도 포함해 초보들이 다루기에는
이만한 언어가 없다고 생각합니다.

현재 창조의 업데이트는 잠정적으로 중단된 상태이지만 여러사람들이 모여
프로그래밍도 하고 배우기도 하고 공유도하고 하는 사이트가 있어
초보들이 처음 프로그래밍을 하기엔 적합하다고 생각됩니다.

하지만 이쪽 사람들은 검색을 않하고 무저건 질문하는것을 싫어하므로
일단 검색부터 하시고 검색해도 정 원하는 답변/팁이 없을경우 질문
하도록 합시다 ^^*

http://www.cugz.com 커즈닷컴은.
Createall User Group  의 약자입니다.
들리는 말로는 z는 발음하기 좋으라고 붙인 이니셜이라나 머라나 ㅎㅎ

자이제 대충 소개도 끝났고 창조만을 이용하여 파일합치는 방법을 알아볼까요?
여기엔 여타 API 나 DLL 파일을 이용하지 않습니다.
그리고 강좌하는데 익숙치 않아 개인적인 성향으로 강좌를 진행할수도 있어 보는이에게
어쩌면 피곤하고 이해가 안가는 부분들이 있으실거라 생각됩니다.

궁굼하신것이 있으면 댓글 달아주시면 성심성의것 아는것에한하여 대답하여 드리겠습니다.

처음 접하시는분이라면 자료실의 창조를 다운로드 받으시거나.
http://www.cugz.com 의 창조다운로드를 이용하여 먼져 창조를 설치하시는것이 좋을듯 싶습니다 ^^;

일단 창조의 인터페이스를 보시죠.
사용자 삽입 이미지

여타 언어들보다야 단순한 인터페이스입니다.
뭐 처음접하시면 이게 뭐고 저게 뭐고 궁굼하신것이 많을실 것입니다.
그럴땐 한번씩 배치해봐서 이게 무엇이고 저게 무엇인지 알아두시는것도
좋을것이라 사료됩니다.

자 그럼 이제 파일합치는 방법에 대해서 알아보죠 처음하시는분들이라면 그냥 이런방법도
있구나 정도로만 봐주시고 처음부터 이런것을 만드려면 뭐가먼지 모를지도모르겠습니다.
첫 강좌부터 이런강좌를 올리는것도 왜인지도 모르겠네요...

자 창조에서 파일을 합치려면 파일을 불러와서 합쳐야 겠지만 다른 프로그램들처럼 처리 할
수 있는것이 아니라 이진데이터로 불러와서 합쳐야 하므로 매우 불편하고 속도도 그만큼 느
리며 그만큼 시스템 리소스도 많이 먹게됩니다.
하지만 달리 선택할 방법이 없습니다.

dll 파일을 이용하여 합치면 그만이지만 제목과 같이 오직 창조만을 이용하여 합쳐야하므로
선택할 방법이 없습니다 ^-^;

하지만 중간에 dll 파일을 이용하여 조금이나마 빠른 작업을 할 수 있구나 하는 점도 알려드
릴것입니다.

사용자 삽입 이미지
이것은 프로그램의 인터페이스 입니다.
강좌이기 때문에 배치만 했지 실제로는 사용자중심으로 숨길것은 숨기고 목록만 보여준다던지 하여
꾸며야 겠지요 ^^;;

자 버튼을 누르거나 창이 생성됐을때 또는 포커스가 생겼을때 등 각분야별로 명령어를 입력할 수 있습니다.
사용자 삽입 이미지

화면에 보이는바와 같이 클릭했을때라던지 마우스를 움직였을때 등등 객체마다 각기다른 곳에 명령을 입력할 수
있습니다.
지금은 끝내기 버튼을 눌렀을때 나온 화면입니다.
명령어를 입력해야 겠지요?
명령어 입력창은 어떻게 생겼는지 한번 볼까요 ?
사용자 삽입 이미지


명령어 입력창은 다음과같이 생겼습니다.
무척이나 단순합니다.

버튼6에는 다음과 같은 명령을 합니다.
위에 설명을 했듯이 끝내기 버튼이므로 프로그램을 끝낼 수 있는 명령을 입력해야겠지요?
다른 언어라면 exit 나 quit 같은 명령이 들어가나 안들어가나는 사용안해바서 모르겠지만.
창조는 한글로 명령을 내리기 때문에 뜻은 같지만 명령은 다르겠지요.

다음과같은 명령을 합니다.

끝내;

파일추가하는 방법도 알아보지요.
잘이해가가지 않는다면 도움말을 보시는것도 좋겠습니다.

이미지를 보시면 맨위에 파일추가가 있습니다.
그러므로 버튼은 버튼0 이 됩니다.
버튼0(파일추가하기)의 클릭했을때 에 아래와 같이 입력합니다.

만일(파일관리창0.보여(ㅇㅈ열기)) {
파일목록.내용.추가(파일관리창0.파일명);
}

나중에 소스를 보시면 알겠지만.
프로그램 인터페이스에 아래 사진과같은 도구가 있습니다.
이 도구를 파일관리창 이라고 부릅니다.
사용자 삽입 이미지
창조 도움말에는 다음과 같이 설명되있습니다.

파일열기와 파일저장을 위한 창을 보여준다.

자 위와같이 하여 파일을 한개 또는 선택하는 만큼 추가할 수 도있지만.
폴더를 선택하여 추가하는 방법도 있겠죠?
위명령어를 간단하게 설명하자면 만일(다른언어에서는 if 가 되겠죠.)
파일관리창을 이용해서 파일을 열었을때 값이 이됩니다.
따라서 파일을 안열었다면 다음명령은 진행되지 않습니다.
값이 일경우 파일목록에 내용을 추가합니다.

버튼1(폴더추가하기)의 클릭했을때 에 아래와 같이 입력합니다.

문자:선택된폴더;
선택된폴더:=폴더선택창보여();
만일(선택된폴더<>"") {
파일찾아(거짓,선택된폴더,"*.*",파일목록.내용);
}

위명령에는 위에서 보지 못한 명령이 있습니다.(당연한거아녀! 퍼퍼퍼퍽!!)
문자 라는게 보이군요 이것은 무엇에 쓰는 물건인고 하니.
변수라고 하는 녀석입니다.
문자 = 문자형 변수 실수 = 숫자형 변수 진리 = 값이 참인지 거짓인지 .....
뭐 대충 이정도 변수가 있습니다.
여기선 문자라고 하는 변수선언되었습니다.
선택된폴더라는 변수폴더선택창보여(); 이란 명령을 넣음으로써 변수에 선택된
폴더경로가 저장됩니다.

그리고 또 만일(if)가 또나왔습니다.
여기선 선택된폴더(변수) 가 비어있는지 아니면 내용이 있는지 검사합니다.
위의 파일열기에서는 파일을 열었는지 진리형으로 알아냈습니다만.
여기에서는 경로가 변수에 포함이 되어있는지 확인합니다.
따라서 폴더를 선택하지 않았다면 명령이 더이상 진행되지않겠죠?

그리고 여기서 파일찾아 란 명령이나왔습니다.
도움말에선 이녀석을 다음과 같이 설명합니다.

함수: 파일찾아(진리: 하위찾기; 문자: 폴더, 파일; ㅎ문자열: 내용)

해당하는 폴더(디렉토리)내의 파일들을 모두 찾아준다.

하위찾기    참이면 현재 폴더에서만 찾고 거짓이면 하위폴더까지 모두 찾는다.
폴더    찾기를 할 폴더명
파일    찾을 파일들('*'을 사용할 수 있다)
내용    찾은 파일명이 들어갈 문자열리스트

예제:
  파일찾아(거짓, "c:\windows", "*.exe", 리스트박스0.내용);

자 폴더찾아로 폴더의 내용을 추가했습니다.
파일추가와 폴더추가는 단순히 파일을 선택해서 추가할것이냐.
아니면 폴더안에있는 모든 파일을 추가할것이냐 차이입니다.

다음은 압축하기 입니다.
파일합치기전에 제가 구조를 설명해드리겠습니다.

1. 파일의 구조
   일반파일들 -> 이진데이터 -> 임시저장 -> 압축
2. 방법
    파일들을 이진데이터로 불러온다음 text 로 저장후 압축한다.
3. 예제(자세한 구조)
Createall Active Files
Ver,1.0
#파일이름
00DA01E0D..................
.................................
이진데이터(약 2000바이트를 읽어옵니다.)
/end
#파일이름
0D0E01F.....................
.
.
.
반복

위 구조대로 파일을 모두읽어옵니다. 하지만 파일이 많아질수록 메모리 사용량이 늘어나기때문에
구조는 저런구조지만 작업후 한꺼번에 저장하지않고 작업하자마자 저장하는 방식을 사용합니다.

버튼2(압축하기) 의 클릭했을때 에 다음과같은 명령을 입력합니다.

실수: 줄써핸들;
줄써핸들 := 파일만들어(경로추출(실행파일명)+
"\active.tmp");
파일줄써(줄써핸들,
"Createall Active Files");
파일줄써(줄써핸들,
"Ver,1.0");
되풀이() {
문자:파일이름,파일위치;
파일위치:=파일목록.내용.부분문자(
0);
파일이름:=파일명추출(파일위치);
파일줄써(줄써핸들,
"#"+파일이름);
실수: 파일핸들;
문자: 읽은내용;
파일핸들 := 파일열어(파일위치, ㅍㅇ읽기 + ㅍㅇ쓰기금지);
반복

  {
읽은내용 := 파일이진읽어(파일핸들,
2000);
만일(문자길이(읽은내용) <>
0)
파일줄써(줄써핸들,읽은내용);
같이실행해;
} 까지(문자길이(읽은내용) =
0);
파일닫아(파일핸들);
파일줄써(줄써핸들,
"/end");
파일목록.내용.삭제(
0);
만일(파일목록.내용.줄수=
0)
그쳐;
}
파일닫아(줄써핸들);
파일압축해(경로추출(실행파일명)+
"\active.tmp",경로추출(실행파일명)+"\active.caf");
파일삭제(
로추출(실행파일명)+"\active.tmp");
문자창보여(
"압축파일이 생성되었습니다.");

이번소스는 좀 기네요 ^^;;
먼져 줄써핸들을 실수형으로 선언한후 파일을 읽어옵니다.
읽어온내용을 이진데이터로 변환하여 2000바이트씩 저장합니다.
여기서 사용된 명령어 소개를 하겠습니다.
파일만들어 , 파일줄써 , 되풀이 , 파일열어 , 파일이진읽어 , 파일닫아 , 그쳐 , 파일압축해
파일삭제 , 문자창보여

파일만들어
- 파일을 지정된 위치에 만들며 만들어진 파일의 크기는 0K 입니다.
파일줄써
- 열린 파일에 내용을 씁니다. 자동으로 엔터가 마지막에 들어갑니다.
되풀이
- 만족하는 조건이 될때까지 같은 명령을 되풀이 합니다.
파일열어
- 파일을 창조에서 사용할 수 있도록 핸들에 파일을 엽니다.
파일이진읽어
- 핸들에 열려있는 내용을 이진데이터로 읽습니다.
파일닫아 - 열린파일을 닫습니다.
그쳐
- 되풀이 명령사용시 만족하는 값이있을때 되풀이를 중지시킵니다.
파일압축해
- 파일을 압축합니다. 이미지와 음악같은 경우는 압축휴과가 별로 없습니다.
파일삭제
- 지정한 파일을 삭제합니다.
문자창보여
- 사용자에게 문자창을 보여줍니다.

파일을 합치는법을 배웠으니 다음이시간에는 파일을 풀어봐야죠 ^^
기대해주세요 ^^

http://blog.dosiin.info/94

김길남   2007-02-27 PM 11:53:35  
친절한 설명 감사히 잘 봤습니다,
전에부터 기다리고 있었는데 이제 마무리 하셨군요,,
얼마나 노고가 많으셨는지요,,

그럼 여기서 현제식으로 데이타를 열어서 자기만의 표식을 추가한후 다시 저장하면 그것이 바로 MP3의 ID3 기록과 같은것(방식)이 될까요?
이희창   2007-04-28 PM 12:25:39  
선 리플,,
글씨가 너무 붙어있어서 다 읽기가 무서워서(?);;
LIST ALL               GO TO THE TOP


N
   Subject
Posted by
Date
H
242
   창조로 컴퓨터 제어? [2]
박재성 2008/05/25  4752
241
   워드2007의 진실.. [3]
박재성 2008/05/13  4860
240
   현자의 코드 [3]
김제형 2007/11/12  5904
239
   CreateallCOM 에서 ActiveX 사용이 가능해질경우 가능한일 한... [5]
박재성 2007/08/11  4756
238
   우연히 만들다보니 이런팁이 생겨나네요.창위치.. [4]
강정훈 2007/08/03  5016
237
   Q/A에 올렷던 '사용자함수(dll) 중복 감시기' 손봐서 이곳에 ...
바람 2007/06/23  4818

   [등록완료] 창조만을 이용하여 파일합치고 풀기 [2]
박재성 2007/02/08  6179
235
   음수형 -> 양수형 간단한 방법
지상현 2007/01/23  5655
234
   [버그!] 'ㅎ리스트박스.갱신시작'을 사용할때 주의하자!.. [7]
박종훈 2007/01/13  4978
233
   코딩시 키보드 노동 약간 줄이자; [5]
박종훈 2007/01/01  5725
232
   보기좋은 코드 관리도 좋다; [4]
박종훈 2006/12/31  5216
231
   어떤방법으로든 핸들[Handle]를 구해보자! [수정#3] [18]
박종훈 2006/12/31  10073
230
   Manifest 파일을 만들면, 생기는 변화!
박종훈 2006/12/17  6349
229
   RPG 게임 제작할때 도움이 되는 참고 프로그램들... [1]
장규형 2006/11/19  5377
228
     또 하나 더!
이진성 2008/02/15  4107
227
   ㅎ메모, ㅎ리스트박스 등에서, 속도향상 팁 [7]
박종훈 2006/11/11  5700
226
   숫자만 입력되는 에디트[Numeric Editbox] [6]
박종훈 2006/10/15  7501
225
   API에 쓰이는 상수 값 쉽게 알아내기 [1]
지상현 2006/09/24  5662
224
   창조를 위한 창조도움말 유저가이드-_-; [3]
박종훈 2006/08/26  5327
223
   [대박!] 메모리 사용률 확! 줄여보자 ㅋ [5]
박종훈 2006/08/12  6344
222
   [영상강좌]창조 메뉴 관리창 완전정복!! [12]
손상진 2006/08/03  5057
221
   [ㅎ메모] 단어구분[자동줄바꿈] 속성에 주의하자! [5]
박종훈 2006/08/10  7402
220
   XP처럼, 암호를 * 대신 ● 로 표시하기 ㅋ [3]
박종훈 2006/07/25  6505
219
   메모 가지고 놀기! [3]
지상현 2006/07/25  5744
218
     [re] 메모 가지고 놀기! [주의사항] [1]
박종훈 2006/07/25  5396
LIST ALL   Prev [1][2][3][4] 5 [6][7][8][9][10]..[14] Next
Copyright 1999-2024 Zeroboard / skin by reedyfox in miniwini style
로그인
지우개 Expert 3.0
제작자 : 천호성 님 [LINK]
로그인
대박로또2005
제작자 : 최재일 님 [LINK]
로그인
1박종훈15292 점
2지상현8809 점
3손상진7388 점
4권선중6060 점
5이진백5174 점
로그인
가입일닉네임
05/31김동률
03/31홍형기
09/01o00pp99oo
12/27이재민
11/20이희철
로그인