본문 바로가기

delphi481

TEdit 숫자만 입력받기 TEdit 숫자만 입력받기 procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin // #8 is Backspace if not (Key in [#8, '0'..'9']) then begin ShowMessage('Invalid key'); // Discard the key Key := #0; end; end; If you also want numbers with a decimal fraction, you must allow a POINT or a COMMA, but only once. For an international version that looks at the correct decimal separator, he code co.. 2021. 10. 27.
TdateEdit 날짜 요일 구하기 TdateEdit 날짜 요일 구하기 Web.HTTPApp uses추가 DateToLongDateStr(DateEdit1.Date); 이전버전은 DayofWeek 사용 0일,1월,2화,3수,4목,5금,6토,7일 2021. 10. 26.
판넬 이미지파일 저장 판넬 이미지파일 저장 TMyPanel = class(TPanel) public property Canvas; end; procedure TForm1.Button1Click(Sender: TObject); var B: TBitmap; begin B:=TBitmap.Create; B.Width:=Panel1.Width; B.Height:=Panel1.Height; B.Canvas.CopyRect(Rect(0,0,B.Width,B.Height), TMyPanel(Panel1).Canvas, Rect(0,0,B.Width,B.Height)); B.SaveToFile('panel.bmp'); B.Free; end; Panel1 - your Panel; 2021. 10. 21.
이미지(JPG) 사이즈 구하기 이미지(JPG) 사이즈 구하기 procedure GetJPGSize(const sFile: string; var wWidth, wHeight: Word); function ReadMWord(f: TFileStream): Word; type TMotorolaWord = record case Byte of 0: (Value: Word); 1: (Byte1, Byte2: Byte); end; var MW: TMotorolaWord; begin { It would probably be better to just read these two bytes in normally } { and then do a small ASM routine to swap them. But we aren't talking } { abou.. 2021. 10. 20.
Timage에 외부 이미지 파일/txt파일 드래그&드롭으로 가져오기 Timage에 외부 이미지 파일/txt파일 드래그&드롭으로 가져오기 unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, {Units Added} Vcl.Imaging.jpeg, Vcl.Imaging.pngimage, Winapi.ShellAPI; {Units Added} type TForm1 = class(TForm) edt1: TEdit; img1: TImage; mmo1: TMemo; procedure FormCrea.. 2021. 10. 19.
델파이 API 애니매이션 효과내기 API 애니매이션 효과 AnimateWindow(handle, 1000, AW_HOR_POSITIVE);//왼쪽->오른쪽 AnimateWindow(handle, 1000, AW_HOR_NEGATIVE);//오른쪽->왼쪽 AnimateWindow(handle, 1000, AW_VER_POSITIVE);//위->아래 AnimateWindow(handle, 1000, AW_VER_NEGATIVE);//아래->위 AnimateWindow(handle, 1000, AW_CENTER);//내부적으로 축소 또는 외부확장 AnimateWindow(handle, 1000, AW_HIDE);//윈도우를 숨기는 효과 AnimateWindow(handle, 1000, AW_ACTIVATE);//윈도우 활성시키는 효과 Anim.. 2021. 10. 18.
String 을 PAnsiChar 변환 String 을 PAnsiChar 변환 function StringToPAnsiChar(stringVar : string) : PAnsiChar; Var AnsString : AnsiString; InternalError : Boolean; begin InternalError := false; Result := ''; try if stringVar '' Then begin AnsString := AnsiString(StringVar); Result := PAnsiChar(PAnsiString(AnsString)); end; Except InternalError := true; end; if InternalError or (String(Result) stringVar) then begin Raise Exc.. 2021. 10. 14.
난수 문자열 만들기 난수 문자열 만들기 function RandomPassword(PLen: Integer): string; var str: string; begin Randomize; //string with all possible chars str := 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; Result := ''; repeat Result := Result + str[Random(Length(str)) + 1]; until (Length(Result) = PLen) end; procedure TForm1.Button1Click(Sender: TObject); begin //generate a password with 10 chars label1.Caption.. 2021. 10. 13.
문자 사이에서 숫자 추출하기 문자 사이에서 숫자 추출하기 [문자사이에서 숫자 추출하기] function ExtractInt(Astring:String):String; var i : integer; TempString:String; begin TempString := ''; Astring := Trim(Astring); if Astring '' then for i := 1 to Length(Astring) do if (Astring[I] in ['0'..'9']) then TempString := TempString+AStrig[I]; Result := Trim(TempString); end; {숫자 사이에서 문자 추출하기} function ExtractString(Astring:String):String; var i : intege.. 2021. 10. 12.
문자열에서 특정 단어가 몇번 들어갔는지 체크하는 함수 문자열에서 특정 단어가 몇번 들어갔는지 체크하는 함수 uses strutils; function countword(const source, wordstr : string; index : integer = 1):integer; var i, lensource : integer; begin result := 0; lensource := length(source); i := index; // 일정 인덱스 이후의 문자를 검색. while i0 then inc(result) else break; inc(i); end; end; 2021. 10. 11.
열거형의 사용방법 열거형의 사용방법 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Memo1: TMemo; Panel1: TPanel; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} type { 열거형을 정의한다 } DayOfWeek = (Mon, .. 2021. 10. 8.
델파이 DLL 사용 방법 델파이 DLL 사용 방법 1. DLL 생성 방법 File > New > Other > Delphi Projects > DLL Wizard 선택하면 기본 DLL 프로젝트가 생성됨. 2.DLL 호출 방법 => 동적사용 procedure TForm1.Button1Click(Sender: TObject); type TFunc = function(s:string) : string; //dll 함수 설정 var Handle : THandle; MyFunc : TFunc; begin Handle := LoadLibrary('파일명.dll'); if Handle 0 then begin @MyFunc := GetProcAddress(Handle, 'dll함수명'); if @MyFunc nil then begin //DL.. 2021. 10. 8.
파일 경로/이름/확장자 등 알아내기 파일 경로,이름,확장자 등 알아내기 Example code : Extract all of the parts of a full file name 코드 var fullFileName : string; begin // Set up a full file name with drive and path fullFileName := `C:\Program Files\Borland\Delphi7\Projects\Unit1.dcu`; // Show the component parts of this full name ShowMessage(`Drive = `+ExtractFileDrive (fullFileName)); ShowMessage(`Dir = `+ExtractFileDir (fullFileName)); ShowMess.. 2021. 10. 7.
Unix파일 (.sam) 델파이에서 읽기 방법 Unix파일 (.sam) 델파이에서 읽기 방법 procedure ReadUnixLn(var fd: TextFile; var s: string); var i,a: integer; c: char; begin i := 0; a := 0; while ( not Eof(fd) ) do begin Read(fd,c); if ( c=Chr(10) ) then exit; SetLength(s,i+1); s[i] := c; Inc(i); inc(a); end; end; procedure TfrmSisdMain.Button2Click(Sender: TObject); var fd: TextFile; s: string; begin try AssignFile(fd,'C:\Root\post_real\IN\20140219.IAQ0.. 2021. 10. 6.
텍스트 파일읽기 비교 텍스트 파일읽기 비교 목적 : 파일을 읽어들여 라인별로 StringList 에 저장하는 것 1. FileStream : 빠르다. 라인수도 줄일 수 있다. (사실 Readln 빼고는 거의 동일한 수준) procedure Test_FileStream; var FileStream: TFileStream; sList: TStringList; begin sList:=TStringList.Create; FileStream:=TFileStream.Create(FILE_NAME, fmShareDenyNone); try sList.LoadFromStream(FileStream); finally FreeAndNil(FileStream); FreeAndNil(sList); end; end; 2. Readln : 두배 이상 .. 2021. 10. 5.
델파이 파일복사 방법 델파이 파일복사 방법 unit Unit1; interface uses Windows, Messages, SysUti= False; end; end; // 파일의 존재여부 검사 function CheckSrcF(st: string): boolean; begin Resr(tgtfname); inf.fFlags := 0 or FOF_MULTIDESTFILES; if SHFileOperation(inf) = 0 tte(srcfname, fmOpenRead); try t := TFileStream.Create(tgtfname,fmOpenWrite or fmCreate ); try t.CopyFrom(s, s.Size); finally t.Free; end; finally s.Free; end; end; // Bl.. 2021. 10. 1.
파일크기 구하기 파일크기 구하기 // 파일크기 반환. 파일이 없으면 -1 function GetFileSize(FilePath: String): Int64; var SR: TSearchRec; begin if FindFirst(FilePath, faAnyFile, SR)=0 then Result:=Int64(SR.FindData.nFileSizeHigh) shl Int64(32)+Int64(SR.FindData.nFileSizeLow) else Result:=-1; FindClose(SR); end; 2021. 9. 30.
ini 파일 읽기/생성 ini 파일 읽기/생성 procedure TForm1.FormCreate(Sender: TObject); var ini: TIniFile; tmp, iniFileName: String; begin iniFileName := 'c:\test.ini'; ini := TIniFile.Create(iniFileName); if FileExists(iniFileName) then begin tmp := ini.ReadString('Section', 'value01', '0'); ShowMessage(tmp); end else begin ini.WriteString('Section', 'value01', '1'); end; ini.Free; end; 2021. 9. 29.
UTF-8 인코딩 파일 읽기 UTF-8 인코딩 파일 읽기 Delphi 2009 기준. (String이 기본적으로 WideString) uses SysUtils 필요. function ReadUTF8File(Path: String): String; var fStream: TFileStream; Buffer: TBytes; begin Result:=''; if not FileExists(Path) then Exit; fStream:=TFileStream.Create(Path, fmOpenRead); try SetLength(Buffer, fStream.Size); fStream.ReadBuffer(Pointer(Buffer)^, Length(Buffer)); Result:=TEncoding.UTF8.GetString(Buffer, 0,.. 2021. 9. 28.
텍스트 파일읽기 비교 텍스트 파일읽기 비교 목적 : 파일을 읽어들여 라인별로 StringList 에 저장하는 것 1. FileStream : 빠르다. 라인수도 줄일 수 있다. (사실 Readln 빼고는 거의 동일한 수준) procedure Test_FileStream; var FileStream: TFileStream; sList: TStringList; begin sList:=TStringList.Create; FileStream:=TFileStream.Create(FILE_NAME, fmShareDenyNone); try sList.LoadFromStream(FileStream); finally FreeAndNil(FileStream); FreeAndNil(sList); end; end; 2. Readln : 두배 이상 .. 2021. 9. 27.