sysutils27 TStringBuilder로 효율적인 문자열 결합하기 TStringBuilder로 효율적인 문자열 결합하기 Delphi에서 반복문이나 대량 문자열 조합 시 + 연산자를 사용하면 메모리 재할당이 빈번해 성능 저하가 발생할 수 있습니다. TStringBuilder는 내부 버퍼를 관리해 한 번만 메모리를 할당하고 문자열을 누적하므로, 대용량 텍스트 생성에 탁월합니다. uses System.SysUtils, System.Classes; procedure BuildLargeString; var SB: TStringBuilder; I: Integer; ResultStr: string; begin SB := TStringBuilder.Create; try for I := 1 to 10000 do SB.AppendFormat.. 2025. 8. 8. TStreamReader로 인코딩된 텍스트 파일 읽기 (Beginner) TStreamReader로 인코딩된 텍스트 파일 읽기 (Beginner) 델파이에서 다양한 인코딩(UTF-8, ANSI 등)의 텍스트 파일을 읽을 때는 TStreamReader를 사용하면 간편합니다. TStreamReader 생성자에 인코딩을 지정해주면, 올바른 문자 변환이 자동으로 이뤄져 파일 내용이 깨지지 않습니다.uses System.Classes, System.SysUtils;procedure ReadTextFile(const FileName: string);var Reader: TStreamReader; Line: string;begin // UTF-8 인코딩으로 읽기 Reader := TStreamReader.Create(FileName, TEncoding.UTF8); try while n.. 2025. 8. 5. TMemoryStream 사용으로 메모리 기반 데이터 처리하기 TMemoryStream 사용으로 메모리 기반 데이터 처리하기 파일 입출력이나 네트워크 메시지를 메모리에서 처리할 때, TMemoryStream을 활용하면 데이터의 읽기·쓰기 작업을 파일 디스크 없이 빠르게 수행할 수 있어 테스트, 임시 데이터 처리, 버퍼링 등에 유용합니다. uses System.Classes, System.SysUtils; procedure TestMemoryStream; var MS: TMemoryStream; Msg: string; begin MS := TMemoryStream.Create; try Msg := '델파이 메모리 스트림!'; MS.WriteBuffer(Pointer(Msg)^, Length(Msg)); MS.Position.. 2025. 7. 16. TryStrToDate로 문자열 → 날짜 안전하게 변환하기 TryStrToDate로 문자열 → 날짜 안전하게 변환하기 델파이에서 사용자가 입력한 문자열을 날짜로 변환할 때 StrToDate를 쓰면 형식이 맞지 않으면 예외가 발생합니다. 이럴 경우 프로그램이 중단될 수 있어 위험합니다. TryStrToDate를 사용하면 예외 없이 변환 여부를 체크할 수 있어 유효성 검사에 매우 유용합니다. uses System.SysUtils; procedure ShowValidDate(const S: string); var D: TDate; begin if TryStrToDate(S, D) then ShowMessage('올바른 날짜입니다: ' + DateToStr(D)) else ShowMessage('잘못된 날짜 형식입니다: ' + S).. 2025. 7. 8. TIniFile로 손쉬운 설정 파일 관리하기 TIniFile로 손쉬운 설정 파일 관리하기 델파이 애플리케이션에서 사용자 환경설정이나 간단한 데이터를 파일에 저장할 때 INI 파일은 가볍고 편리한 방식입니다. TIniFile 클래스를 이용하면 레지스트리나 복잡한 DB 없이도 Key=Value 형태로 손쉽게 읽고 쓸 수 있습니다. 설정 파일은 텍스트 에디터로도 바로 수정 가능하므로 디버깅과 유지보수 측면에서도 유리합니다. uses System.IniFiles, System.SysUtils; procedure SaveAppSettings; var Ini: TIniFile; FileName: string; begin FileName := ChangeFileExt(Application.ExeName, '.ini'); Ini :=.. 2025. 7. 7. IncludeTrailingPathDelimiter로 경로 끝 관리하기 IncludeTrailingPathDelimiter로 경로 끝 관리하기 파일 경로나 폴더를 조합할 때 슬래시(\) 누락으로 인해 경로가 잘못 처리되는 경우가 많습니다. IncludeTrailingPathDelimiter 함수는 경로 문자열 끝에 구분자가 없으면 자동으로 추가해 주므로, 경로 연결 시 안전하게 사용할 수 있습니다. uses System.SysUtils; procedure BuildFilePath; var BaseDir, FileName, FullPath: string; begin BaseDir := 'C:\MyApp\Data'; FileName := 'report.txt'; // 구분자가 없으면 '\'를 추가 FullPath := IncludeTrailing.. 2025. 6. 25. ExtractFilePath와 ExtractFileName으로 파일 경로 쉽게 분리하기 ExtractFilePath와 ExtractFileName으로 파일 경로 쉽게 분리하기델파이에서 파일 전체 경로를 다룰 때 ExtractFilePath와 ExtractFileName을 사용하면 파일의 경로와 이름을 손쉽게 분리할 수 있습니다. 로그, 설정 파일 저장, 파일 이름 변경 등 파일 처리 로직에서 자주 사용됩니다. uses System.SysUtils; procedure SplitFilePath; var FullPath, PathOnly, FileOnly: string; begin FullPath := 'C:\Projects\MyApp\config.ini'; PathOnly := ExtractFilePath(FullPath); FileOnly := ExtractFileNam.. 2025. 6. 6. FormatFloat으로 숫자 형식을 자유롭게 지정하기 FormatFloat으로 숫자 형식을 자유롭게 지정하기델파이에서는 FormatFloat 함수를 사용하여 실수나 숫자를 원하는 형식으로 문자열로 변환할 수 있습니다. 통화 표시, 자리수 지정, 천 단위 쉼표 삽입 등 다양한 출력 포맷을 손쉽게 제어할 수 있습니다. uses System.SysUtils; procedure FormatNumbers; var Value: Double; begin Value := 1234567.89; ShowMessage('통화 형식: ' + FormatFloat('#,##0.00', Value)); ShowMessage('소수점 제거: ' + FormatFloat('#,##0', Value)); ShowMessage('고정 소수점 4자리: ' + Fo.. 2025. 5. 30. ParamStr와 ParamCount를 이용한 명령줄 인자 처리 ParamStr와 ParamCount를 이용한 명령줄 인자 처리델파이 애플리케이션에서 외부 명령줄 인자를 받아야 할 경우 ParamCount와 ParamStr를 사용하면 간단히 해결할 수 있습니다. 자동화 처리, 스크립트 실행, 배치 명령 연동 등에 널리 활용됩니다. uses System.SysUtils; procedure ProcessCommandLine; var I: Integer; begin if ParamCount = 0 then ShowMessage('입력된 명령 인자가 없습니다.') else for I := 1 to ParamCount do ShowMessage(Format('인자 %d: %s', [I, ParamStr(I)])); end; Param.. 2025. 5. 27. CreateDir와 ForceDirectories의 차이 이해하기 CreateDir와 ForceDirectories의 차이 이해하기 폴더를 생성할 때 CreateDir는 단일 디렉터리만 만들 수 있는 반면, ForceDirectories는 존재하지 않는 중간 경로까지 포함하여 전체 폴더 구조를 한 번에 생성해줍니다. 상황에 따라 올바른 함수를 선택하는 것이 중요합니다. uses System.SysUtils; procedure CreateDirectoryDemo; var SimplePath, NestedPath: string; begin SimplePath := 'C:\Temp\Logs'; NestedPath := 'C:\Temp\Logs\2025\05\26'; if CreateDir(SimplePath) then ShowMessage('단.. 2025. 5. 26. VarToStr를 이용한 안전한 Variant → 문자열 변환 VarToStr를 이용한 안전한 Variant → 문자열 변환 델파이에서 Variant 타입은 다양한 형식을 담을 수 있어 유연하지만, 직접 문자열로 변환할 경우 오류가 발생할 수 있습니다. 이럴 때 VarToStr 함수를 사용하면 어떤 값이든 안정적으로 문자열로 바꿀 수 있습니다. 특히 DB에서 불러온 값 처리에 유용합니다. uses System.Variants, System.SysUtils; procedure ConvertVariantToString; var V: Variant; S: string; begin V := Null; S := VarToStr(V); // 결과: 빈 문자열 '' ShowMessage('변환 결과: [' + S + ']'); V := 123; .. 2025. 5. 23. Inc와 Dec를 사용한 간단한 정수 증감 처리 Inc와 Dec를 사용한 간단한 정수 증감 처리 델파이에서 정수 값을 증가시키거나 감소시킬 때 Inc와 Dec 프로시저를 사용하면 코드가 간결해지고 가독성도 좋아집니다. 연산자를 직접 사용하는 것보다 의도가 명확하게 드러나는 장점이 있습니다. procedure CountExample; var Counter: Integer; begin Counter := 10; Inc(Counter); // 1 증가 → 11 Inc(Counter, 5); // 5 증가 → 16 Dec(Counter, 3); // 3 감소 → 13 ShowMessage('현재 값: ' + IntToStr(Counter)); end; Inc(변수) → 1 증가 Inc(변수, 값) → 해당 값만큼 증가.. 2025. 5. 19. StringReplace로 문자열 다중 치환 처리하기 StringReplace로 문자열 다중 치환 처리하기 델파이의 StringReplace 함수는 문자열 내 특정 텍스트를 다른 텍스트로 교체할 수 있는 강력한 기능입니다. 반복적 치환이나 대소문자 무시 기능까지 지원해 다양한 텍스트 변환 작업에 적합합니다. uses System.SysUtils; procedure ReplaceTextDemo; var Original, Modified: string; begin Original := 'Delphi는 정말 좋은 Delphi 개발 도구입니다.'; Modified := StringReplace(Original, 'Delphi', 'Object Pascal', [rfReplaceAll, rfIgnoreCase]); ShowMessage(Mod.. 2025. 5. 16. Now와 DateToStr, TimeToStr로 현재 날짜와 시간 구분 출력하기 Now와 DateToStr, TimeToStr로 현재 날짜와 시간 구분 출력하기델파이에서는 Now를 통해 현재 시스템의 날짜와 시간을 동시에 얻을 수 있습니다. 이 값을 DateToStr 또는 TimeToStr 함수와 함께 사용하면 날짜와 시간을 분리하여 명확하게 출력할 수 있습니다. uses System.SysUtils; procedure ShowCurrentDateTime; var Today: string; CurrentTime: string; begin Today := DateToStr(Now); CurrentTime := TimeToStr(Now); ShowMessage('오늘 날짜: ' + Today); // 예: 2025-05-15 ShowMessa.. 2025. 5. 15. TryStrToInt를 이용한 안전한 문자열 → 정수 변환 TryStrToInt를 이용한 안전한 문자열 → 정수 변환 델파이에서 문자열을 정수로 변환할 때 StrToInt를 사용하면 변환 실패 시 예외가 발생합니다. 반면, TryStrToInt는 예외 없이 실패 여부를 확인하며 변환 결과를 안전하게 처리할 수 있어 사용자 입력 검증에 매우 유용합니다. uses System.SysUtils; procedure TryStrToIntExample; var Input: string; Number: Integer; begin Input := '1234'; if TryStrToInt(Input, Number) then ShowMessage('변환된 숫자: ' + IntToStr(Number)) else ShowMessage('유효.. 2025. 5. 13. FreeAndNil을 사용한 메모리 해제와 포인터 초기화 FreeAndNil을 사용한 메모리 해제와 포인터 초기화 델파이에서 객체를 메모리에서 해제한 뒤 포인터를 nil로 초기화하지 않으면, 이후 해당 포인터를 접근하려 할 때 오류(Access Violation)가 발생할 수 있습니다. FreeAndNil은 이 두 과정을 한 번에 처리해주는 안전한 도구입니다. uses System.SysUtils; procedure FreeAndNilExample; var Obj: TStringList; begin Obj := TStringList.Create; try Obj.Add('Delphi is powerful!'); finally FreeAndNil(Obj); // 메모리 해제 + 포인터 nil 처리 end; if Obj .. 2025. 5. 1. 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. Copy 함수를 사용한 문자열 일부 추출 Copy 함수를 사용한 문자열 일부 추출 델파이에서 문자열의 일부분을 추출할 때 Copy 함수를 사용하면 매우 쉽고 빠르게 원하는 부분을 잘라낼 수 있습니다. 텍스트 처리, 데이터 분석, 포맷 변환 등 다양한 상황에서 유용하게 활용됩니다. uses System.SysUtils; procedure CopyExample; var OriginalText, ExtractedText: string; begin OriginalText := 'Welcome to Delphi World!'; ExtractedText := Copy(OriginalText, 12, 6); // 12번째 문자부터 6글자 추출 ShowMessage('추출된 텍스트: ' + ExtractedText); end; Copy.. 2025. 4. 28. 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. 이전 1 2 다음