본문 바로가기

Delphi Tip/문자15

Pos 함수를 활용한 문자열 내 위치 검색 Pos 함수를 활용한 문자열 내 위치 검색 델파이의 Pos 함수는 특정 문자열이 다른 문자열 내 어디에 위치하는지를 알려주는 함수입니다. 검색 기능, 유효성 검사, 문자열 파싱 등 다양한 곳에서 활용할 수 있습니다. uses System.SysUtils; procedure PosExample; var Text, SubStr: string; Index: Integer; begin Text := 'Welcome to the Delphi world!'; SubStr := 'Delphi'; Index := Pos(SubStr, Text); ShowMessage('위치: ' + IntToStr(Index)); // 결과: 16 end; 실행 결과: "위치: 16" ('Delphi'.. 2025. 4. 30.
Length를 이용한 배열과 문자열 길이 확인 Length를 이용한 배열과 문자열 길이 확인 델파이에서는 Length 함수를 사용해 배열의 크기나 문자열의 길이를 쉽게 구할 수 있습니다. 이는 반복문 작성, 데이터 유효성 검사, 문자열 처리 등에 매우 기본적이면서 중요한 역할을 합니다. uses System.SysUtils; procedure LengthExample; var SampleText: string; Numbers: array of Integer; begin SampleText := 'Hello Delphi!'; ShowMessage('문자열 길이: ' + IntToStr(Length(SampleText))); // 결과: 13 SetLength(Numbers, 5); ShowMessage('배열 크기: ' +.. 2025. 4. 29.
AnsiUpperCase와 AnsiLowerCase로 대소문자 변환 AnsiUpperCase와 AnsiLowerCase로 대소문자 변환 문자열을 대문자 또는 소문자로 변환할 때 AnsiUpperCase와 AnsiLowerCase 함수를 사용하면 빠르고 간편하게 처리할 수 있습니다. 로케일에 민감하지 않은 문자열 비교나 정렬을 할 때 특히 유용합니다. uses System.SysUtils; procedure ConvertCaseExample; var Original, UpperStr, LowerStr: string; begin Original := 'Delphi Is Great!'; UpperStr := AnsiUpperCase(Original); LowerStr := AnsiLowerCase(Original); ShowMessage('대문자:.. 2025. 4. 24.
QuotedStr를 사용한 안전한 문자열 포장 QuotedStr를 사용한 안전한 문자열 포장 SQL 쿼리나 JSON 문자열 생성 시 문자열을 따옴표로 감싸야 할 경우가 자주 있습니다. 이때 QuotedStr 함수를 사용하면 자동으로 작은따옴표(')를 감싸고 내부에 있는 따옴표도 이스케이프 처리해줍니다. uses System.SysUtils; procedure QuotedStrExample; var UserInput, SQL: string; begin UserInput := 'O''Reilly'; SQL := 'SELECT * FROM Users WHERE Name = ' + QuotedStr(UserInput); ShowMessage(SQL); end; "SELECT * FROM Users WHERE Name = 'O''Rei.. 2025. 4. 23.
SameText를 활용한 대소문자 구분 없는 문자열 비교 SameText를 활용한 대소문자 구분 없는 문자열 비교 문자열 비교 시 대소문자를 구분하지 않고 비교하고 싶다면 SameText 함수를 사용하면 됩니다. = 연산자보다 더 명확하고 안정적으로 조건을 처리할 수 있어 사용자 입력 비교 등에 매우 유용합니다. uses System.SysUtils; procedure CompareTextDemo; var Input1, Input2: string; begin Input1 := 'Delphi'; Input2 := 'delphi'; if SameText(Input1, Input2) then ShowMessage('같은 문자열입니다.') else ShowMessage('다른 문자열입니다.'); end; SameText(A, .. 2025. 4. 22.
Trim, TrimLeft, TrimRight로 공백 제거하기 Trim, TrimLeft, TrimRight로 공백 제거하기사용자 입력, 파일 처리, 문자열 비교를 할 때 앞뒤 공백이 문제를 일으킬 수 있습니다. 델파이에서는 Trim 관련 함수를 통해 문자열의 공백을 손쉽게 제거할 수 있어 데이터 정제에 매우 유용합니다. uses System.SysUtils; procedure TrimExample; var RawText, CleanedText: string; begin RawText := ' Hello Delphi! '; CleanedText := Trim(RawText); ShowMessage('[' + CleanedText + ']'); // 결과: [Hello Delphi!] end; Trim: 문자열 양쪽 끝 공백 제거 Tr.. 2025. 4. 17.
한글(2Byte)문자열 깨지지 않게 자르기 한글(2Byte)문자열 깨지지 않게 자르기    WideString 을 사용하자한글을 자를때 깨진 1Byte 문자를 WideString 변수에 넣었다가String 변수로 되받아서 Trim 처리를 하면 깨진 문자가 정리되어 이걸 활용 이 예제는 C++Builder 에서도 동일하게 적용 procedure TForm1.Button1Click(Sender: TObject);varTextString, TextTrim: String;TempWide: WideString;LenthCnt: Integer;beginTextString := Trim(Edit1.Text); //원본문자열LenthCnt := StrToIntDef(Edit2.Text,7); //문자열 자를 위치 if ( Length(TextString) > .. 2024. 7. 8.
델파이 2진수 변환(Binaryconversion) 델파이 2진수 변환(Binaryconversion)    두번째 인자가 비워져 있거나,2진수를 표현하는 자릿수에 못 미치면 2진수로 표현될 수 있는최소 길이로 표현되고 두번째 인자가 2진수 자릿수보다 크면 앞에 0이 붙어 나온다. function IntToBin(const Value: Cardinal; Digits: Integer = 0): string;vari, d: Integer;beginfor d := 1 to 32 do  if (1 shl d) > Value then break;  if Digits > d then d := Digits;  SetLength(Result, d);  for i := 0 to d-1 do if (1 shl i) and Value = 0 then  Result[d-i] .. 2024. 6. 13.
한글 초/중/종성 알아내기 한글 초/중/종성 알아내기 type TCVJ = packed record //초성 중성 종성의 번호를 저장할 구조체 C :integer; V :integer; J :integer; end; const //유니코드 한글 초성 순서표 UniCodeC : array [0..18] of string = ('ㄱ','ㄲ','ㄴ','ㄷ','ㄸ','ㄹ','ㅁ','ㅂ','ㅃ','ㅅ', 'ㅆ','ㅇ','ㅈ','ㅉ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ'); //유니코드 한글 중성 순서표 UniCodeV : array [0..20] of string = ('ㅏ','ㅐ','ㅑ','ㅒ','ㅓ','ㅔ','ㅕ','ㅖ','ㅗ','ㅘ', 'ㅙ','ㅚ','ㅛ','ㅜ','ㅝ','ㅞ','ㅟ','ㅠ','ㅡ','ㅢ', 'ㅣ'); //유니코드 한글.. 2024. 2. 15.
델파이 UTF-8 델파이 UTF-8 UTF-8 UCS Transferation Format 의 약자로 Unicode를 위한 가변 길이 문자 인코딩 방식 중 하나이다. Unicode는 전 세계의 모든 문자를 표현하기 위한 표준을 제공하는 국제적인 문자 집합이다. UTF-8은 이러한 Unicode 문자를 바이트로 효과적으로 표현하는 방법 중 하나로, 많은 컴퓨터 시스템에서 표준으로 사용되고 있다. UTF-8 특징 가변 길이 인코딩: UTF-8은 각 문자를 1바이트부터 4바이트까지 가변 길이로 인코딩한다. 기본적으로 ASCII 문자는 1바이트로 인코딩되며, 이는 기존의 ASCII 문자 집합과의 하위 호환성을 제공한다. 다른 언어의 문자는 더 많은 바이트로 표현된다. ASCII 호환성: UTF-8은 ASCII 문자 집합과 완벽하.. 2023. 11. 15.
Case문으로 문자 비교하기 Case문으로 문자 비교하기 uses System.TypInfo type TSameText = (ChrMove, MapLoad, MapLoad2, FadeOut, FadeIn, SetNPC, NPCMove); .... implementation .... procedure TForm1.Button1Click(Sender: TObject); var strTemp : string; begin strTemp := 'FadeIn'; case GetEnumValue(TypeInfo(TSameText), strTemp) of 0: ShowMessage('0'); 1: ShowMessage('1'); 2: ShowMessage('2'); 3: ShowMessage('3'); 4: ShowMessage('4'); 5: .. 2023. 11. 8.
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.