Hallo,
@ Vader
Das kann ich erklären.
Bei der Setup datei istdie Variabel pfad als Constante ss definiert:
const
pfad='C:\Programme\Ferby\Ferby-Fall_II\data\';
aber bei der Zip datei habe ich die exe neu gemacht mit einen anderen pfad, und zwar so:
const
pfad='data\';
deshalb funktionierts, egal wo du das Spiel entpackst.
-------
Noch was zur Auflösung ändern und zur Frquenz wieder herstellen,
Ich habe jetzt meinen eigenen Quellcode erweitert, er ändert die Auflösung und nacher stellt er die alte Auflösung, Bildschirmfrequenz und Desktopsymbole wieder her:
Delphi-Quellcode:
// ------------------------------------------------------------------------------ // Screen // ---------------------------------
function changescreen(Width, Height: Word; pfad: string): Boolean;
var
lpDevMode: TDeviceMode;
saveiconherstellen: boolean;
begin
saveiconherstellen:=false;
if width<>0 then
begin
ScreenAlt.x:=(screen.width);
ScreenAlt.y:=(screen.height);
refreshalt:=getrefresH;
ShellExecute(0,'open', PChar(pfad + 'saveicon.exe'),'"\s"', nil, SW_Show);
sleep(1000);
end
else
begin
saveiconherstellen:=true;
width:=ScreenAlt.X;
height:=ScreenAlt.Y;
end;
Result := EnumDisplaySettings(nil, 0, lpDevMode);
if Result then
begin
lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
lpDevMode.dmPelsWidth := Width;
lpDevMode.dmPelsHeight := Height;
lpDevMode.dmDisplayFrequency := refreshAlt;
lpDevMode.dmFields := lpDevMode.dmFields Or DM_DISPLAYFREQUENCY;
Result := ChangeDisplaySettings(lpDevMode,
CDS_UPDATEREGISTRY) = DISP_CHANGE_SUCCESSFUL;
if saveiconherstellen then ShellExecute(0,'open', PChar(pfad + 'saveicon.exe'),'"\r"', nil, SW_Show);
end;
if not Result then
begin
MessageBeep(MB_ICONERROR);
MessageDlg('Fehler1' +#10#10+ 'Das Programm konnte die Auflösung nicht auf '+inttostr(width)+'x'+inttostr(height)+ ' umstellen.' +#10+ 'Es könnte sein das der Computer diese Auflösung nicht unterstützt' +#10+ 'Sollte der Computer diese Auflösung doch unterstüzen,' +#10+ 'dann stelle bitte die Auflösung manuel ein und starte das Spiel erneut.', mtError, [mbOK], 0);
Application.Terminate;
end;
end;
function GetRefresh : Integer;
var
hDC : Cardinal;
begin
hDC := GetDC(0);
Result := GetDeviceCaps(hDC, VREFRESH);
ReleaseDC(0, hDC);
end;
Danke an alle die mir geholfen haben diesen Quellcode Fertig zu stellen!!
mfg,
Ferby