나는 곧 내 머리카락을 모두 잡아 당긴다. 말할 것도없이, 나는 좌절감을 느낀다. .NET 용 Delphi Prism 내에서 코딩 중이며 현재 응용 프로그램 구성 파일에 내 응용 프로그램의 사용자 정의 속성을 저장하려고합니다. 다음과 같이 모든 것을 설정했습니다. 작동하지만 일부 값은 저장되거나 검색되지 않습니다. 그래서 app.config 파일을 살펴 보았습니다. app.config 파일은 모두 거기에있을 것이라고 생각했지만 파일에 저장된 값 중 검색된 값과 일치하지는 않습니다. Properties.Designer에 넣은 기본값 만 있습니다. 누군가는 Delphi Prism IDE 외부에서 응용 프로그램을 실행할 때만 설정 파일이 업데이트된다는 것을 온라인에서 말했습니다. 그리고 그랬지, 그건 여전히 효과가 없었어. 필자는 컴퓨터를 재부팅하여 델파이 프리즘이 지저분한 것으로 생각하고 빠른 휴식이 필요하다고 생각하기까지했습니다. 심지어 그것이 작동하지 않았다.응용 프로그램 속성 설정이 실제로 저장되거나 기록되는 위치는 어디입니까?
그래서 app.config 파일이나 메모리에 값이 저장되는 위치는 어디입니까?
는 (. 내 코드는 고르지 수 있습니다 나는 코드를 연마하기 전에 내 응용 프로그램이 작동을위한 기본 설정을 얻기 위해 노력하고 있어요.) 여기
내 Properties.Settings.Designer의 이미지 :
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MillenniaMono.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<MillenniaMono.Properties.Settings>
<setting name="baseDir" serializeAs="String">
<value>00:00:00</value>
</setting>
<setting name="SoftKey" serializeAs="String">
<value>$6e1eaffa</value>
</setting>
<setting name="OnTop" serializeAs="String">
<value>False</value>
</setting>
<setting name="StartExpanded" serializeAs="String">
<value>True</value>
</setting>
<setting name="HideOnStart" serializeAs="String">
<value>False</value>
</setting>
<setting name="DXCommLocation" serializeAs="String">
<value>50, 50</value>
</setting>
<setting name="InputBoxLocation" serializeAs="String">
<value>50, 50</value>
</setting>
<setting name="MainFormLocation" serializeAs="String">
<value>50, 50</value>
</setting>
<setting name="OutputUnitLocation" serializeAs="String">
<value>50, 50</value>
</setting>
<setting name="SysErrorDlgLocation" serializeAs="String">
<value>50, 50</value>
</setting>
<setting name="UnitDuplicateLocation" serializeAs="String">
<value>50, 50</value>
</setting>
<setting name="UnitsLocation" serializeAs="String">
<value>50, 50</value>
</setting>
<setting name="UnitSelectLocation" serializeAs="String">
<value>50, 50</value>
</setting>
<setting name="CommStatusLocation" serializeAs="String">
<value>50, 50</value>
</setting>
<setting name="UnitsWinSize" serializeAs="String">
<value>703, 300</value>
</setting>
<setting name="DXComm_TypeDX" serializeAs="String">
<value>0</value>
</setting>
<setting name="DXComm_Comport" serializeAs="String">
<value>0</value>
</setting>
<setting name="DXComm_Baud" serializeAs="String">
<value>1200</value>
</setting>
<setting name="DXComm_Parity" serializeAs="String">
<value>0</value>
</setting>
<setting name="DXComm_RetryInt" serializeAs="String">
<value>0</value>
</setting>
<setting name="DXComm_TimeOutDelay" serializeAs="String">
<value>0</value>
</setting>
<setting name="DXComm_ScanTime" serializeAs="String">
<value>0</value>
</setting>
<setting name="DXComm_Offline_Pct" serializeAs="String">
<value>0</value>
</setting>
<setting name="DXComm_Online_Pct" serializeAs="String">
<value>0</value>
</setting>
<setting name="DXComm_ControlCycleCount" serializeAs="String">
<value>0</value>
</setting>
<setting name="DXComm_LockTimeDelay" serializeAs="String">
<value>0</value>
</setting>
</MillenniaMono.Properties.Settings>
</userSettings>
</configuration>
,369 : 여기
은 app.config 파일입니다 1,363,210
의 app.config 여기에 기록하기위한 코드이다 : 여기
TypeDXCard.SelectedIndex:= commsetting.DXComm_TypeDX;
Commport.SelectedIndex:=CommSetting.DXComm_Comport;
case commsetting.DXComm_Baud of
1200: BaudRate.SelectedIndex:=0;
2400: BaudRate.SelectedIndex:=1;
4800: Baudrate.SelectedIndex:=2;
9600: BaudRate.SelectedIndex:=3;
19200: BaudRate.SelectedIndex:=4;
38400: BaudRate.SelectedIndex:=5;
57600: BaudRate.SelectedIndex:=6;
115200: BaudRate.SelectedIndex:=7;
else BaudRate.SelectedIndex:=0;
end;
case commsetting.DXComm_Parity of
0: begin EvenParity.Checked:=true; NoneParity.Checked:=false; end;
1: begin NoneParity.Checked:=true; EvenParity.Checked:=false; end;
else begin EvenParity.Checked:=true; NoneParity.Checked:=false; end;
end;
RetrySpin.Value:=Commsetting.DXComm_RetryInt;
RetryIni := RetrySpin.Value;
TimeOutSpin.Value:=CommSetting.DXComm_TimeOutDelay;
TimeOutDelay := TimeOutSpin.Value;
ScanSpin.Value:=CommSetting.DXComm_ScanTime;
ScanTime := ScanSpin.Value;
OfflineSpin.Value:=CommSetting.DXComm_Offline_Pct;
OfflinePct:=OfflineSpin.Value;
OnlineSpin.Value:=Commsetting.DXComm_Online_Pct;
OnlinePct:=OnlineSpin.Value;
Controlspin.Value:=Commsetting.DXComm_ControlCycleCount;
ControlCycleCount:=Controlspin.Value;
LockTime.Value:=Commsetting.DXComm_LockTimeDelay;
LockTimeDelay := LockTime.Value;
end;
표시 또는 검색되는 실제 값이다
여기if ReadWrite then
begin
RetryIni := Int32(RetrySpin.value);
OfflinePct := int32(OfflineSpin.value);
ScanTime := int32(ScanSpin.value);
OnlinePct := int32(OnlineSpin.value);
timeoutDelay := int32(TimeoutSpin.Value);
ControlCycleCount := int32(ControlSpin.value);
LockTimeDelay := Int32(LockTime.value);
with commsetting := Millenniamono.Properties.Settings.Default do
begin
commsetting.DXComm_TypeDX := TypeDXCard.SelectedIndex;
commsetting.DXComm_Comport := Commport.SelectedIndex;
commsetting.DXComm_Baud:=BaudRate.SelectedIndex;
commsetting.DXComm_Parity := int32(EvenParity.Checked = true);
commsetting.DXComm_RetryInt:=RetryIni;
commsetting.DXComm_TimeOutDelay:=timeOutDelay;
commsetting.DXComm_ScanTime:=ScanTime;
commsetting.DXComm_Offline_Pct:=OfflinePct;
commsetting.DXComm_Online_Pct:=onlinepct;
commsetting.DXComm_ControlCycleCount:=ControlCycleCount;
commsetting.DXComm_LockTimeDelay:=LockTimeDelay;
commsetting.Save;
end;
end;
코드 판독된다. 임의로 값을 저장하고 다시 읽도록 임의로 설정했지만 app.config 파일에서 보는 값과 일치하지 않습니다.
아쉽게도 내 컴퓨터 시스템 어디서나 user.config 파일을 찾을 수 없습니다. * .config 파일을 검색하고 오늘의 날짜와 시간을 기준으로 결과를 정렬했습니다. 그래도 오늘은 업데이트 된 설정 파일이 없습니다. 검색 결과에는 많은 administration.config, app.config, ApplicationHost.config 등이 표시됩니다. 목록이 너무 길어서 댓글에 없습니다. – ThN
http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx에서 프로세스 모니터를 다운로드하십시오. 필터를 "operation"- "is"- "writefile"로 설정하여 앱을 실행하고 저장 위치를 확인하십시오 (우리에게 알려주면 다른 사람들에게도 유용 할 수 있음) – Eddy
예 !!! 그것을 발견. 고맙습니다. 분명히 AppData 폴더가 숨겨져 있습니다. 따라서 Windows 7 검색 도구는이 모든 것을 건너 뛰었습니다. 그럼, 내 다음 질문은 사전 정의 된 user.config로 소프트웨어를 배포해야하는 경우,이 user.config 파일을 가져 와서 exe 파일을 따라 던지십시오. – ThN