내 exe 응용 프로그램에 파일 (모든 종류의)를 임베드하고 그것을 사용하려면 원격에서 추출 할 수 싶습니다, 어떻게 리소스에 포함 된하지만 응용 프로그램 디렉토리에 파일을 배치하고 싶지 않아, 내 exe에 모든 파일 (예 : .rec)을 저장하려는 경우 C#으로 텍스트 파일로 저장 한 다음 읽을 수 있음 그것 FileStream에 의해하지만 델파이에서 리소스 파일은 exe 파일에서 별도입니다. 이 작업을 수행 할 수있는 해결책이 있습니까? 고마워요!델파이 exe 응용 프로그램에 파일을 임베디드 (appliaction에서 별도의 파일로)
4
A
답변
16
.rc 파일을 만들어 프로젝트에 추가해야합니다. 당신이 TResourceStream를 사용하여 이러한 fikles 중 하나를로드 할 수 있습니다 지금 당신이 빌드를 수행 한 후
FIXED48 IMAGE ..\Resources\Fixed48x48.png
MENU16 IMAGE ..\Resources\Menu16x16.png
TICK SOUND ..\Resources\Tick.wav
PING SOUND ..\Resources\Ping.wav
: 같은 RC 파일의 내용은
procedure TdmReportGeneral.InsertLogo(Memo: TStringList; View: TfrView);
var
S: TResourceStream;
begin
if (View is TfrPictureView) and (View.Name = 'Logo') then begin
S := TResourceStream.Create(0, 'FIXED48', 'IMAGE');
try
// do something useful... TfrPictureView(View).Picture.MetaFile.LoadFromStream(S);
finally
S.Free();
end;
end;
end;
2
당신이 델파이 컴파일러를 얻을 수 있어야합니다 프로젝트의 유닛에 {$ R myresource.res} pragma로 추가하여 리소스를 EXE에 연결하십시오. 그런 다음 FindResource를 읽어야 할 때이를 호출하여 핸들을 얻을 수 있습니다.
이 article은 적절한 단계를 안내합니다.
1
DelphiDabbler는 바로이 주제에 a great article을 가지고 있습니다. 파일을 리소스로 포함하는 방법과이를 다시 읽는 방법을 보여주는 다운로드 용 예제 프로젝트 2 개도 포함됩니다.
당신은 우리가 여기 설명한 것을 보여주는 worked example 것을 다운로드 할 수 있습니다 - 그것은 위의 코드를 사용합니다. zip 파일 에는 한 쌍의 프로젝트가 들어 있습니다. 첫 번째 은 제공된 서식있는 텍스트 파일을 리소스 파일에 포함시키는 프로그램입니다. 두 번째 프로그램에는 리소스 파일 이 포함되어 있으며 위와 같이 rich edit 구성 요소에 리치 텍스트가 표시됩니다.
뭔가 오해했습니다. 델파이에서는 모든 개발 환경 에서처럼 개발 * 동안 리소스가 분리되어 있습니다. 프로그램을 컴파일하고 링크하면 리소스가 EXE 파일에 * 있습니다. C#에서는 동일한 작업을 수행 할 수 있습니다. 단, 포함 된 파일을 가져 오기 위해 전체 EXE 파일을 읽지 않으려는 경우 FileStream을 사용하지 않아도됩니다. –
Vista/Win7에서이 실행 파일을 추출한 후이 실행 파일을 실행하려면 대상 컴퓨터에 대한 관리자 권한이 필요할 수도 있습니다. – skamradt