자바스크립트를 모르니 하나하나 인터넷 찾아가면 하고 있다. -.-;;



// 문자열 날짜의 유효성 확인

function checkDate(strDate){

    var chkdate=Date.parse(strDate)

    

    if (isNaN(chkdate)==false) {

        var d=new Date(chkdate);

        return true;

    } else {

        return false;

    };

}


var dt = "2014/3/21";

var resultval = checkDate(dt);


document.body.innerHTML = resultval;


Posted by 떡잎



unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button3: TButton;
    Edit1: TEdit;
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }

    procedure WMRecvData(var Msg: TWMCopyData); message WM_USER + 100;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button3Click(Sender: TObject);
var
  sMsg : string;
  cds : TCopyDataStruct;
begin
  sMsg := edit1.Text;

  cds.dwData := 0; // Identify the message contents
  cds.cbData := 1 + Length(sMsg);
  cds.lpData := PChar(sMsg);

  SendMessage(Handle, WM_USER + 100, 0, Integer(@cds));
end;



 

procedure TForm1.WMRecvData(var Msg: TWMCopyData);
var
  sMsg : string;
begin
  sMsg := PChar(Msg.CopyDataStruct.lpData);

  self.Caption := sMsg;
end;

end.


-----------------------

이젠 귀찮으니까 이렇게 올리네 -.-;;
그래도 나중 되면 잊어버리니까 이렇게라도 써두면
잊어버리면 이거보면 생각나겠지.
아마도...

Posted by 떡잎
델파이에서의 문자열은 C의 Char와 비슷한 (NULL 터미네이터)문자열과 파스칼 스타일의 문자열이 있다.

문자열의 선언

  ▶ PChar(C 스타일 문자열)
    pTest:PChar;
    이렇게 선언했을 경우에는 pTest는 포인터임으로 문자열의 영역을 다음과 같이 확보해야된다.
    pTest:=AllocStar(128);

    아니면 아래와 같이 영역을 지정해 주면 된다.
    ArrTest:array[0..127] of Char;
         :
    pTest := ArrTest;  

  ▶ String(파스칼 스타일 문자열)
    sTest:String
    스트링은 특별히 문자열의 영역을 확보할 필요는 없다.
    단 $H 옵션을 사용했을 경우 길이가 255가 된다.



  ■ C스타일 문자열 관련 함수

함수

기능

StrAlloc C문자열에 버퍼사이즈를 정하고 문자열의 첫 문자를 가르키는 포인터를 반환
StrBufSize StrAlloc으로 정한 문자열 버퍼에 저장할 수 있는 최대 문자수를 반환
StrCat Source의 카피를 Dest 의 마지막에 추가하고 결합된 문자열을 반환
StrComp Str1을 Str2과 비교
StrCopy Source를 Dest 에 카피하고 Dest를 반환
StrDispose 文字列을 파기
StrECopy Source를 Dest에 카피, 문자열의 마지막에 NULL문자를 가르키는 포인터를 반환
StrEnd Null로 끝나는 문자열의 마지막을 가르키는 포인터 반환
StrFmt 배열의 엔트리를 형식화
StrIComp 지정된 문자수 만큼 두개의 문자열을 비교
StrLCat 지정한 문자수를 문자열에 추가
StrLComp 지정한 문자수 만큼의 2개의 문자열을 비교
StrLCopy 지정된 문자수를 Source에서 Dest로 카피
StrLen 문자열안에 NULL을 제외한 문자수를 반환
StrLFmt 지정된 오픈 배열의 일련의 인수를 형식화
StrLIComp 지정된 문자수 만큼 대소문자를 구별하지 않고 두개의 문자열을 비교
StrLower 문자열을 소문자로 변환
StrMove 지정된 문자수를 문자열에 카피
StrNew 힙영역을 확보 문자열을 카피, 그 문자열을 가르키는 포인터 반환。
StrPCopy 파스칼 스타일의 문자열을 NULL로 끝나는 문자열에 카피
StrPLCopy 파스칼 스타일의 문자열의 문자를 Null로 끝나는 문자열에 카피
StrPos Str1안의 최초의 Str2을 가르키는 포인터를 반환
StrRScan Str 안의 마지막 Chr를 가르키는 포인터를 반환
StrScan 문자열 안의 최초의 지정 문자를 가르키는 포인터를 반환
StrUpper 문자열을 대문자로 반환


 
파스칼 스타일 문자열 관련 함수

함수

기능

Concat 문자열과 문자열을 더한다.
이것보다는 그냥 "+" 를 이용하여 문자열을 더한다.
Copy 부분 문자열 얻기
Delete 문자열의 일부 삭제
Insert 문자열을 다른 문자열에 삽입
Length 문자열의 길이 얻기
Pos 문자열에 지정한 부분의 문자열의 위치 반환
Format 지정한 형식으로 수치나 문자열을 변환


  문자열 수치 변환 관련 함수

함수

기능

IntToStr 정수를 파스칼 문자열로 변환
DateToStr TDateTime형의 변수를 파스칼 문자열로 변환
FloatToStr 부동소수점값을 파스칼 문자열로 변환
IntToHex 정수를 16진수 표기 문자열로 표기
StrToInt 문자열(10진수, 16진수)을 수치로 변환
StrToIntDef 문자열을 수치로 변환
TimeToStr TDateTime 변수를 문자열로 변환
Val 문자열을 수치로 변환


  특수 문자 표기
    #을 사용하면 문자열에 제어문자를 표기할 수 있다.
   '#13#10' (CRLF)

  ■ 문자 판별

함수

기능

IsCharLower 소문자인지 아닌지 판별
IsCharUpper 대문자인지 아닌지 판별
IsCharAlpha 영자이지 아닌지 판별
IsCharAlphaNumeric 영숫자인지 아닌지 판별


Posted by 띠리


문자열 넘기고 받는 간단한 C의 DLL 소스

char    szTemp[50];


extern "C"

{

    // DLL 문자열 인수 입력

    BOOL PASCAL EXPORT SetStr(char *pszSend)

    {

        sprintf(szTemp, "%s", pszSend);

        return true;

    }


    // DLL 문자열 인수로 문자열 넘겨주기

    BOOL PASCAL EXPORT GetStr(char *pszSend)

    {

        sprintf(pszSend, "%s + %s", szTemp , szTemp);

        return true;

    }


}



DLL에서 문자열을 주고 받기 위해서는
델파이에서 PChar형으로 문자를 DLL에 넘겨주고 받으면 된다.


문자열을 넘기고 받는 델파이 소스

unit dtest;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, TeEngine, Series, TeeProcs, Chart;

type
  TfrmMain = class(TForm)
    btnTest: TButton;
    edtStr: TEdit;
    lblStr: TLabel;
    edtNo: TEdit;
    lblNo: TLabel;
    procedure btnTestClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}

// DLL에서 문자열을 넘겨주고 받기 위해서는 PChar형을 쓴다.
function SetStr(psStr:PChar):integer; stdcall; external 'dtest.dll';

function GetStr(psStr:PChar):integer; stdcall; external 'dtest.dll';

procedure TfrmMain.btnTestClick(Sender: TObject);
var
  nNo:Integer;
  psStr:PChar;
  sString:String;
  nWork:Integer;

begin

  // 문자열 초기화
  psStr := Nil;
  // 문자열 사이즈 잡기
  psStr := AllocMem(50);

  sString := edtStr.Text;

  // String형을 PChar형으로 캐스트
  psStr := PChar(sString);

  // dll에 문자열 입력
  SetStr(psStr);

  // 문자열 초기화
  psStr := Nil;
  // 문자열 사이즈 잡기
  psStr := AllocMem(50);

  // dll에서 문자열 가져오기
  GetStr(psStr);

  // PChar형에서 String형으로 바꾸기
  sString := StrPas(psStr);

  lblStr.Caption := sString;
 
  if psStr <> Nil then FreeMem(psStr);

end;

end.



Posted by 띠리

strncpy

문자열을 n문자 카피

#include <string.h>
char *strncpy(char *s1, const char *s2, size_t n);

문자배열 *s1에 문자열 *s2를 선두에서 n문자 카피한다.
주의) 이 때 널문자가 자동으로 추가되지 않는다.
s2의 길이가 n보다 작을 경우에는 남은 문자를 "\0"로 채운다.
 

   char szTemp[20] = "AA BB CC";

 

    printf("01234567890\n");

    printf("%s \n", szTemp);        // "AA BB CC"


    strncpy(szTemp,   "aa", 2);       

    printf("%s \n", szTemp);        // "aa BB CC"


    strncpy(szTemp+3, "bb", 2);       

    printf("%s \n", szTemp);        // "aa bb CC"


    strncpy(szTemp+3, "ZZ", 9);       

    printf("%s \n", szTemp);        // "aa ZZ"





Posted by 띠리
BLOG main image
프로그래밍 공부하면서 써가는 개인 노트 (따라서 여기에 씌여있는 소스의 신빙성을 보장 못함 -.-;;) 이 블로그 보면서 틀린 점이 있으면 꼬옥 알려주세요. by 띠리

공지사항

카테고리

분류 전체보기 (323)
Win32 SDK 초보 (27)
통신관련 (11)
MFC TIP (20)
C/C++ TIP (10)
개발기타 (10)
링크 (2)
견물생심 (24)
이것저것 (8)
용어메모 (3)
데이터베이스 (32)
비주얼 베이직 (10)
하드웨어 (3)
C# (42)
Xcode (3)
델파이 (82)
홈페이지 (5)
MindStorm (0)
낙서 (5)
스크래치 (0)
기타 (6)
아두이노 (1)
라즈베리파이 (2)
안드로이드 (6)
파이썬 (0)
WEB (2)
Total : 964,050
Today : 65 Yesterday : 370