GSI

프로그램 짜다가 저장한 이미지를 확인 하기 위해서 탐색기에서 이미지를 읽기 보다는
해당 알씨와 같은 이미지 프로그램에 인자로 해당 파일을 자동으로 열리게 하는게 좋을때가 있다.
아래와 같이 하면 해당 실행 파일을 실행할 수 있다.

char szProgramName[MAX_PATH]= {0, };
wsprintf (szProgramName, "C:\\Program Files\\ESTsoft\\ALSee\\alsee d:\\aaa.bmp");
STARTUPINFO si = {0,};
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
si.dwFlags = 0;

CreateProcess (NULL,
      szProgramName,
      NULL,
      NULL,
      FALSE,
      0,
      NULL,
      NULL,
      &si,
      &pi);
Posted by gsi
:

[C#] - string.Split 사용법

C# 2008. 3. 13. 17:46 |

C++ 에서 C# 으로 읽어 들일때
char buf[128] 의 데이터를 아래와 같이 읽어 들일때.
buf1 = new string(br.ReadChars(128));
string [] split = buf1.Split(new Char [] {'\0'});
buf1 = split[0];

buf1 이 128로 읽어 들이면, 뒤에 \0 의 값이 쭉 저장되게 된다.
그렇게 하면  buf1 의 길이는 128이 된다. 즉, 필요 없는 공간이 생기게 마련이다.
(혹.. 이거 말고 다른 방법으로 읽을수 있다면 꼭 연락좀.. -.- )
그래서 \0 을 Split을 사용해서 나눈 다음에 필요한 정보만 가져 오도록 한다.

string [] split = buf1.Split(new Char [] {'\0'});
를 하고 나면 split 에 \0 으로 나누어진 데이터가 배열로 저장 된다.
이렇게 하고 나면 제일 앞쪽에 필요한 데이터만 모이게 된다.

buf1 = split[0] 을 해서 buf1 에 필요한 데이터만 담을 수 있다.
Posted by gsi
:

사용자 삽입 이미지

HTTP 프로토콜을 사용해서 원격파일 다운로드 프로그램 만들고 있습니다.

HTTP 를 통해서 파일을 받을때는 WebClient 를 사용하고 있다.
단순하게 다운로드 받기 위해서는 아래와 같이 DownloadFile()를 사용한다.

WebClient webclient = new WebClient();
webclient.DownloadFile(updatelistUrl, updatelistTxt);


그리고 다운로드 받는 상태를 알기 위해서는 DownloadFile 가 아닌 DownloadFileAsync 를 사용해야 한다.
그리고 받는 동안 호출되는 이벤트 함수와 다 받은후 처리 하는 함수를 등록해야 한다.

// 객체 생성
WebClient client = new WebClient();

// 이벤트 함수 등록
client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);

// 받는 동안 프로그래스바의 Value에 추가한다. (퍼센트 값이 바로 제공된다.)
void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
    progressfile.Value = e.ProgressPercentage;
}
//
void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{

}


파일을 실제로 다운로드 받을때는 아래와 같이 처리 합니다.
(DownloadFileAsync 이것을 사용해야 이벤트 함수가 호출 됩니다.)

client.DownloadFileAsync(new Uri(curFile.Url), curFile.Path);


스레드로 해도 될 듯 한데 우선 작업 하기 편하게 타이머를 사용해서 제작 하였습니다.
Test 버튼을 누르면 해당 동작이 시작 됩니다.


[동작 순서]

  1. Updatelist.txt 파일을 다운로드 한다.
  2. Updatelist.txt 파일의 정보를 분석해서 다운로드할 파일을 구성한다.
  3. 해당 파일을 타이머를 통해서 다 받을 때 까지 반복한다.
  4. 다 받으면 자동 종료 또는 특정 실행 파일을 실행한다.
Posted by gsi
:

디렉토리를 생성할때 디렉토리가 생성되어 있는지 검사도 해야 한다.

Directory 나 DirectoryInfo 를 사용하면 디렉토리 생성 및 검사도 가능하다.

방법#1

if (Directory.Exists(rootPath) == false)

    Directory.CreateDirectory(rootPath);

방법#2

DirectoryInfo di = new DirectoryInfo(rootPath);

if (di.Exists == false)

{

    di.Create();

}

Posted by gsi
:

Text File를 한줄 한줄 읽을때, 해당 문자를 기준으로 파서 할때 아래와 같이 하면 된다.
Regex는 다른 정규식도 표현할 수 있다고 하지만, @.@ 왠지 복잡하네요..

우선 단순하게 ";"를 기준으로 파서를 하는게 있어서 그 코드를 올려 봅니다.

static void ReadFromFile(string filename)
{
    StreamReader SR;
    string S;
    SR = File.OpenText(filename);
    S = SR.ReadLine();
    while (S != null)
    {
        Regex rx = new Regex(";");

        foreach (string ss in rx.Split(S))
        {
            Console.WriteLine(ss);
        }

        //Console.WriteLine(S);
        S = SR.ReadLine();
    }
    SR.Close();
}
Posted by gsi
: