Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Compiliertes Programm läuft nicht auf XP (https://www.delphipraxis.net/178936-compiliertes-programm-laeuft-nicht-auf-xp.html)

Natcree 4. Feb 2014 16:43

Compiliertes Programm läuft nicht auf XP
 
Hallo habe ein kleines tool gebastelt. Auf meinen Rechner läuft es. Auf dem einem XP rechner nicht
habe das haeckchen bei laufzeit pckages rausgenommen. Auf einem Anderen rechner mit gleichem Betriebssystem win7 fehlt wohl eine datei (midas.dll).

Uwe Raabe 4. Feb 2014 17:09

AW: Compiliertes Programm läuft nicht auf XP
 
Wenn die midas.dll auf dem Rechner fehlt, musst du sie eben mitliefern.

rweinzierl 4. Feb 2014 17:13

AW: Compiliertes Programm läuft nicht auf XP
 
Hallo

Ich bin vor Jahren mit der midas.dll mal ziemlich reingefallen. Damals war die midas.dll ein Com Server (also ActiveX) beim ersten Aufruf hat sich diese in der Registry verewigt. Als ich dann mein Programm in ein anderes Verzeichnis verschoben habe ging nichts mehr.

Wie gesagt ist schon einige Jahre her, aber vielleicht ist es noch immer so.

mfg

Reinhold

Natcree 4. Feb 2014 17:23

AW: Compiliertes Programm läuft nicht auf XP
 
wie liefere ich diese mit. einfach copy paste???

Natcree 4. Feb 2014 17:25

AW: Compiliertes Programm läuft nicht auf XP
 
muss ich noch aufpassen wegen 32 bit und 64 bit system?

p80286 4. Feb 2014 17:34

AW: Compiliertes Programm läuft nicht auf XP
 
Hier im Forum suchenmidas
vielleicht hilft Dir das weiter??

Gruß
K-H

Natcree 4. Feb 2014 17:59

AW: Compiliertes Programm läuft nicht auf XP
 
Danke habe die Midaslib in die Uses eingebunden jetz läuft es auf dem win 7 rechner. Bei XP noch nicht.

Natcree 4. Feb 2014 18:42

AW: Compiliertes Programm läuft nicht auf XP
 
So auf XP läuft es jetzt auch. habe nur ein problem ich habe ein video was im hintergrund läuft dieses kann nicht abgespielt werden. kann mann hier auch was machen oder muss ich einen codec auf dem rechner mit dem XP system installieren??

lbccaleb 4. Feb 2014 18:45

AW: Compiliertes Programm läuft nicht auf XP
 
Es kommt drauf an warum das Video nicht abgespielt wird. Wenn es an einem fehlenden Codec liegt, dann kommst du nicht darum das System damit zu erweitern...

Natcree 4. Feb 2014 19:18

AW: Compiliertes Programm läuft nicht auf XP
 
habe nen codec installiert spielt auch die datei ab aber das programm start immer noch nicht. In der windows fehlerberichtserstattung sgat er was von einem kernel32.dll fehler

lbccaleb 4. Feb 2014 20:27

AW: Compiliertes Programm läuft nicht auf XP
 
Ja wie wäre es denn damit, das du auf hörst uns Rätsel raten zu lassen und mal ein paar Details und\oder mal eine vernünftige Fehlerbeschreibung ablieferst.

Natcree 4. Feb 2014 20:55

AW: Compiliertes Programm läuft nicht auf XP
 
2.exe hat ein Problem festgestellt und muss beendet werden.

AppName: 2.exe AppVer: 0.0.0.0 ModName: kernel32.dll
ModVer: 5.1.2600.6293 Offset: 00012fd3

Fehleberichterstattung erstellt eine TXT.datei

hier der inhalt:

<?xml version="1.0" encoding="UTF-16"?>
<DATABASE>
<EXE NAME="2.exe" FILTER="GRABMI_FILTER_PRIVACY">
<MATCHING_FILE NAME="2.exe" SIZE="4175872" CHECKSUM="0xE9F706B8" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="06/19/1992 22:22:17" UPTO_LINK_DATE="06/19/1992 22:22:17" />
<MATCHING_FILE NAME="billiard.exe" SIZE="22546944" CHECKSUM="0xFE4361F3" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="06/19/1992 22:22:17" UPTO_LINK_DATE="06/19/1992 22:22:17" />
<MATCHING_FILE NAME="midas.dll" SIZE="296448" CHECKSUM="0x5B401120" BIN_FILE_VERSION="7.0.4.453" BIN_PRODUCT_VERSION="7.0.0.0" PRODUCT_VERSION="7.0" FILE_DESCRIPTION="Borland MIDAS Component Package" COMPANY_NAME="Borland Software Corporation" PRODUCT_NAME="Midas support DLL " FILE_VERSION="7.0.4.453" ORIGINAL_FILENAME="MIDAS.DLL" INTERNAL_NAME="MIDAS70" LEGAL_COPYRIGHT="Copyright © 1997-2002 Borland Software Corporation" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="7.0.4.453" UPTO_BIN_PRODUCT_VERSION="7.0.0.0" LINK_DATE="08/09/2002 21:44:33" UPTO_LINK_DATE="08/09/2002 21:44:33" VER_LANGUAGE="Englisch (USA) [0x409]" />
</EXE>
<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
<MATCHING_FILE NAME="kernel32.dll" SIZE="1063936" CHECKSUM="0xE83A657" BIN_FILE_VERSION="5.1.2600.6293" BIN_PRODUCT_VERSION="5.1.2600.6293" PRODUCT_VERSION="5.1.2600.6293" FILE_DESCRIPTION="Client-DLL für Windows NT-Basis-API" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="Betriebssystem Microsoft® Windows®" FILE_VERSION="5.1.2600.6293 (xpsp_sp3_gdr.121001-1622)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="© Microsoft Corporation. Alle Rechte vorbehalten." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x1044D0" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="5.1.2600.6293" UPTO_BIN_PRODUCT_VERSION="5.1.2600.6293" LINK_DATE="10/03/2012 04:58:00" UPTO_LINK_DATE="10/03/2012 04:58:00" VER_LANGUAGE="Deutsch (Deutschland) [0x407]" />
</EXE>
<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
<MATCHING_FILE NAME="kernel32.dll" SIZE="1063936" CHECKSUM="0xE83A657" BIN_FILE_VERSION="5.1.2600.6293" BIN_PRODUCT_VERSION="5.1.2600.6293" PRODUCT_VERSION="5.1.2600.6293" FILE_DESCRIPTION="Client-DLL für Windows NT-Basis-API" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="Betriebssystem Microsoft® Windows®" FILE_VERSION="5.1.2600.6293 (xpsp_sp3_gdr.121001-1622)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="© Microsoft Corporation. Alle Rechte vorbehalten." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x1044D0" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="5.1.2600.6293" UPTO_BIN_PRODUCT_VERSION="5.1.2600.6293" LINK_DATE="10/03/2012 04:58:00" UPTO_LINK_DATE="10/03/2012 04:58:00" VER_LANGUAGE="Deutsch (Deutschland) [0x407]" />
</EXE>
</DATABASE>

jaenicke 5. Feb 2014 05:17

AW: Compiliertes Programm läuft nicht auf XP
 
Da fehlt wohl ein wenig Fehlerbehandlung, denn das bedeutet, dass eine Exception nicht abgefangen wird. Als ersten Schritt kannst du einmal versuchen TApplicationEvents zu benutzen und dort OnException zuweisen. Vielleicht kommt da ja etwas an.

Alternative wäre z.B. madExcept.

Sherlock 5. Feb 2014 06:47

AW: Compiliertes Programm läuft nicht auf XP
 
XP ist im April tot...wozu der Aufwand?

Sherlock

Blup 5. Feb 2014 08:29

AW: Compiliertes Programm läuft nicht auf XP
 
Zitat:

Zitat von Sherlock (Beitrag 1246726)
XP ist im April tot...wozu der Aufwand?

Ist wohl nicht dein ernst, woher willst du wissen auf welchen Kundenkreis die Anwendung zielt?
Es gibt durchaus Anwendungsbereiche abseits des Internets, in sich geschlossene Systeme die weder Virenscanner noch regelmäßige Updates kennen.
Wir hatten noch vor ca. 4 Jahren durchaus Probleme Windows 2000 als Mindestvoraussetzung bei unseren Kunden durchzusetzen und davon gibt es heute noch viele Installationen.

Sherlock 5. Feb 2014 08:53

AW: Compiliertes Programm läuft nicht auf XP
 
Meine Kunden sind Krankenhäuser. Die haben in der Regel auch abgeschottete Systeme, allein schon aus Datenschutzgründen und dann noch hunderte von Rechnern. Dennoch lasse ich mich nicht mit solchen Scheinargumenten erpressen. Es geht nicht nur um Viren, es geht um die darunter liegende SWA an sich (die Probleme mit diversen DLLs zB). Die Handstände, die ich machen müsste, um vier teilweise grundverschiedene Windowsversionen zu supporten zahlt mir keiner. Die Kunden sehen das dann auch ein und modernisieren endlich auch mal ihre Hardware, was noch ein Bonus ist, weil in der Regel mindestens mehr RAM für mein System zur Verfügung steht. Wer moderne Software nutzen möchte, muss ein moderne OS verwenden. :warn:

Sherlock

jaenicke 5. Feb 2014 08:55

AW: Compiliertes Programm läuft nicht auf XP
 
Zitat:

Zitat von Blup (Beitrag 1246737)
Wir hatten noch vor ca. 4 Jahren durchaus Probleme Windows 2000 als Mindestvoraussetzung bei unseren Kunden durchzusetzen und davon gibt es heute noch viele Installationen.

Bei uns sieht es ähnlich aus, da gibt es schon noch einige. Aber solche Systeme können dann eben nicht aktualisiert werden. Unsere aktuelle Version setzt XP mit Service Pack 3 voraus und braucht auch bessere Hardware als auf den meisten Windows 2000 Kisten drauf ist.

Das muss dann der Kunde entscheiden. Neue Hardware und neues Betriebssystem oder keine Updates.

Dass Windows 2000 herausgeflogen ist, liegt aber schlicht daran, dass die Kompilate von aktuellen Delphiversionen dort nicht mehr laufen.

lbccaleb 5. Feb 2014 14:30

AW: Compiliertes Programm läuft nicht auf XP
 
Was machst du, oder besser, was macht die Anwendung wenn der Fehler auftritt?

Natcree 5. Feb 2014 20:40

AW: Compiliertes Programm läuft nicht auf XP
 
es er scheint ein Fenster wie oben schon genannt. Also in dieser Anwendung wird doch nur ein video abgespielt ich kann ja mal den kompletten Code einstellen. Habe das XP system auch schon mit dem aktuellen Codecs versorgt....

Hier mal der Code

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,gifimage, ExtCtrls,shellapi, MPlayer, StdCtrls, colorbutton,
  LMDPNGImage,midaslib;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    MediaPlayer1: TMediaPlayer;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure MediaPlayer1Notify(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}
procedure Delay(Milliseconds: Integer);
var
  Tick: DWord;
  Event: THandle;
begin
  Event := CreateEvent(nil, False, False, nil);
  try
    Tick := GetTickCount + DWord(Milliseconds);
    while (Milliseconds > 0) and
          (MsgWaitForMultipleObjects(1, Event, False, Milliseconds, QS_ALLINPUT) <> WAIT_TIMEOUT) do
    begin
      Application.ProcessMessages;
      if Application.Terminated then Exit;
      Milliseconds := Tick - GetTickcount;
    end;
  finally
    CloseHandle(Event);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
form1.DoubleBuffered:=true;
mediaplayer1.Play;
panel1.Align:=alclient;
borderstyle:=bsnone;
end;

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
  if mediaplayer1.NotifyValue = nvSuccessful then begin
    mediaplayer1.Play;
  end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
form2.Show;
timer1.Enabled:=false;
end;

end.

Und hier die unit 2

Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, LMDPNGImage, ExtCtrls, StdCtrls, colorbutton,shellapi;

type
  TForm2 = class(TForm)
    Label1: TLabel;
    Image1: TImage;
    Timer1: TTimer;
    Timer2: TTimer;
    Label2: TLabel;
    Timer3: TTimer;
    function SetWndRegionFromImg(Bmp: TBitmap; TransparentColor: TColor): Boolean;
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

function TForm2.SetWndRegionFromImg(Bmp: TBitmap; TransparentColor: TColor): Boolean;
type
  TTransColState = (trsOn, trsOff);

  TRGBQuadArray = array[WORD] of Cardinal;
  pRGBQuadArray = ^TRGBQuadArray;
var
  TransColState: TTransColState;
  x, y: Integer;
  line: Integer;
  count: Integer;
  rgn, nrgn: THandle;
  pPixelArray: pRGBQuadArray;
begin
  Result := TRUE;

  if Bmp.PixelFormat <> pf32Bit then
    Bmp.PixelFormat := pf32Bit;

  count := 0;
  line := 0;

  rgn := CreateRectRGN(0, 0, 0, 0); // First Init Region
  nrgn := rgn;

  for y := 0 to Bmp.Height - 1 do
  begin
    pPixelArray := Bmp.Scanline[y];
    TransColState := trsOff;
    for x := 0 to Bmp.Width - 1 do
    begin
      if pPixelArray[x] <> COLORREF(TransparentColor) then
      begin
        if TransColState = trsOff then
        begin
          TransColState := trsOn;
          line := x - 1;
          inc(line);
        end;
      end else
      begin
        if TransColState = trsOn then
        begin
          TransColState := trsOff;
          if count < 4096 then
          begin
            nrgn := CreateRectRgn(line, y, x, y + 1);
            {$IFDEF DEBUGMODE}
              bmp.Canvas.Brush.Color := clGreen;
              bmp.Canvas.FillRect(RECT(line, y, x, y + 1));
              sleep(25);
              application.ProcessMessages;
            {$ENDIF DEBUGMODE}
            CombineRgn(Rgn, Rgn, nRgn, RGN_OR);
            inc(Count);
          end else
          begin
            ShowMessage('Debuginfo: To many Regions. Count of Rgn: '#9 + IntToStr(Count));
            Application.Terminate;
          end;
        end;
      end;
      {$IFDEF DEBUGMODE}
         pPixelArray[x] := RGB(random(256), random(256), random(256));
      {$ENDIF DEBUGMODE}
    end;
  end;
  SetWindowRgn(Handle, Rgn, TRUE);
  DeleteObject(Rgn);
  DeleteObject(nRgn);
end;

procedure TForm2.FormCreate(Sender: TObject);
const
  LWA_COLORKEY = 1; // Use crKey as the transparency color.
  LWA_ALPHA = 2; // Use bAlpha to determine the opacity of the layered window..
  WS_EX_LAYERED = $80000;
  USER32DLL = 'user32.dll';
var
  _SetLayeredWindowAttributes: function(hWnd: THandle; TRansparentColor: COLORREF;
    AlphaValue: Byte; Flags: Cardinal): BOOL; stdcall;
var
  hLib: THandle;
begin
  Self.Color := clblack;
  Self.BorderStyle := bsNone;

  if not (Image1.Picture.Graphic is TBitmap) then
  begin
    ShowMessage('Fehler: Image muss ein Bitmap sein !');
    Application.Terminate;
  end;

  {$IFDEF DEBUGMODE}
   // zum sichtbar machen der Form für den DebugMode
   Self.Show;

  {$ENDIF DEBUGMODE}

  hLib := LoadLibrary(USER32DLL);
  @_SetLayeredWindowAttributes := GetProcAddress(hLib, 'SetLayeredWindowAttributes');
  if @_SetLayeredWindowAttributes <> nil then
  begin
    SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
    _SetLayeredWindowAttributes(Self.Handle, COLORREF(clblack), 200, LWA_COLORKEY or LWA_ALPHA);

  end
  else
  begin
    // alternative, im falle das es SetLayeredWindowAttributes nicht gibt
    SetWndRegionFromImg(Image1.Picture.Bitmap, clblack);

  end;
  FreeLibrary(hLib);

  end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
Label2.Caption:=inttostr(Timer1.tag)+' %';
timer1.Enabled:=false;
timer1.Tag:=timer1.Tag+1;
timer1.Enabled:=true;
if Label2.Caption='0 %' then label1.caption:='Lade Programmbibliotheken ...';
if Label2.Caption='0 %' then timer1.Interval:= 200;
if Label2.Caption='11 %' then label1.caption:='Lade Umgebungsvariablen ...';
if Label2.Caption='11 %' then timer1.interval:= 110;
if Label2.Caption='27 %' then label1.caption:='Lade Laufzeitumgebungen ...';
if Label2.Caption='27 %' then timer1.Interval:= 150;
if Label2.Caption='50 %' then label1.caption:='Lade Umgebungsmatrix ...';
if Label2.Caption='50 %' then timer1.Interval:=300;
if Label2.Caption='78 %' then label1.caption:='Lade Datenbanksystem ...';
if Label2.Caption='78 %' then timer1.Interval:=50;
if Label2.Caption='92 %' then label1.caption:='Lade Vereine ...';
if Label2.Caption='92 %' then timer1.Interval:=20;
if Label2.Caption='100 %' then timer1.Enabled:=false;
if Label2.Caption='100 %' then timer2.enabled:=true;
end;

procedure TForm2.Timer2Timer(Sender: TObject);
begin
Label2.Caption:=inttostr(Timer2.tag)+' %';
if timer2.Tag = 0 then label1.caption:='Lade Spielsystem ...';
if Label2.Caption='0 %' then timer2.Interval:=200;
timer2.Enabled:=false;
timer2.Tag:=timer2.Tag+1;
timer2.Enabled:=true;
if Label2.Caption='21 %' then Label1.Caption:='Spielerdaten werden gelesen ...';
if Label2.Caption='21 %' then timer2.Interval:=20;
if Label2.Caption='50 %' then Label1.Caption:='Spielresourcen werden freigegeben ...';
if Label2.Caption='50 %' then timer2.interval:=100;
if Label2.Caption='76 %' then Label1.Caption:='SpielDatenbank wird geoeffnet ...';
if Label2.Caption='76 %' then timer2.interval:=35;
if Label2.Caption='86 %' then label1.Caption:='Viel Glueck und Gut Holz !!!';
if Label2.Caption='86 %' then timer2.Interval:=1000;
if Label2.Caption='97 %' then label1.caption:= 'Programm wird gestartet !!!';
if Label2.Caption='100 %' then timer2.Enabled:=false;
if Label2.Caption='100 %' then Label2.visible:=false;
if Label2.Caption='100 %' then label1.Visible:=false;
if Label2.Caption='100 %' then image1.Visible:=false;
if Label2.Caption='100 %' then
ShellExecute(Application.Handle,'open',PChar('Billiard.exe'),nil,nil,sw_ShowNormal);
if Label2.Caption='100 %' then close;
end;
procedure TForm2.FormShow(Sender: TObject);
begin
timer3.enabled:=true;
Label1.Caption:='Lade Programmbibliotheken ...';
Label2.Caption:=inttostr(Timer1.tag)+' %';
end;

procedure TForm2.Timer3Timer(Sender: TObject);
begin
timer1.Enabled:=true;
timer3.Enabled:=false;
end;

end.

Medium 5. Feb 2014 22:21

AW: Compiliertes Programm läuft nicht auf XP
 
Zitat:

Zitat von Natcree (Beitrag 1246870)
Also in dieser Anwendung wird doch nur ein video abgespielt

Das sehe ich aber mal deutlich anders.
Zitat:

ich kann ja mal den kompletten Code einstellen.
Das wird auch Zeit!

Aber:
Delphi-Quellcode:
uses
  [...],midaslib;
Ich sehe nirgends in dem Code, dass du diese benutzt. Die DLL kann man sich daher schon mal sparen, und evtl. macht die ja sogar Probleme.

Delphi-Quellcode:
function TForm2.SetWndRegionFromImg(Bmp: TBitmap; TransparentColor: TColor): Boolean;
type
...
...
          if count < 4096 then
          begin
            nrgn := CreateRectRgn(line, y, x, y + 1);
            {$IFDEF DEBUGMODE}
              bmp.Canvas.Brush.Color := clGreen;
              bmp.Canvas.FillRect(RECT(line, y, x, y + 1));
              sleep(25);
              application.ProcessMessages;
            {$ENDIF DEBUGMODE}
            CombineRgn(Rgn, Rgn, nRgn, RGN_OR);
            inc(Count);
          end else
          begin
            ShowMessage('Debuginfo: To many Regions. Count of Rgn: '#9 + IntToStr(Count));
            Application.Terminate;
          end;
HOLY FUCK! 4096 Regions!! Das MSDN sagt nichts darüber, dass die Original-Regions bei CombineRgn() deleted werden. Das heisst, dass du da vermutlich wirklich das System um massig Handles und GDI Ressourcen betrügst. Eventuell mosert XP auch deswegen.

Delphi-Quellcode:
  @_SetLayeredWindowAttributes := GetProcAddress(hLib, 'SetLayeredWindowAttributes');
  if @_SetLayeredWindowAttributes <> nil then
  begin
    SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
    _SetLayeredWindowAttributes(Self.Handle, COLORREF(clblack), 200, LWA_COLORKEY or LWA_ALPHA);

  end
  else
  begin
    // alternative, im falle das es SetLayeredWindowAttributes nicht gibt
    SetWndRegionFromImg(Image1.Picture.Bitmap, clblack);

  end;
  FreeLibrary(hLib);
Ich meine, dass WinXP keine Layered Windows kennt. Hier fehlt aber jegliche Bearbeitung von Rückgabewerten und GetLastError(), so dass potenziell auch hier ein Problem bestehen könnte.

Delphi-Quellcode:
if Label2.Caption='0 %' then label1.caption:='Lade Programmbibliotheken ...';
if Label2.Caption='0 %' then timer1.Interval:= 200;
if Label2.Caption='11 %' then label1.caption:='Lade Umgebungsvariablen ...';
if Label2.Caption='11 %' then timer1.interval:= 110;
if Label2.Caption='27 %' then label1.caption:='Lade Laufzeitumgebungen ...';
if Label2.Caption='27 %' then timer1.Interval:= 150;
if Label2.Caption='50 %' then label1.caption:='Lade Umgebungsmatrix ...';
if Label2.Caption='50 %' then timer1.Interval:=300;
if Label2.Caption='78 %' then label1.caption:='Lade Datenbanksystem ...';
if Label2.Caption='78 %' then timer1.Interval:=50;
if Label2.Caption='92 %' then label1.caption:='Lade Vereine ...';
if Label2.Caption='92 %' then timer1.Interval:=20;
if Label2.Caption='100 %' then timer1.Enabled:=false;
if Label2.Caption='100 %' then timer2.enabled:=true;

[...]

if Label2.Caption='21 %' then Label1.Caption:='Spielerdaten werden gelesen ...';
if Label2.Caption='21 %' then timer2.Interval:=20;
if Label2.Caption='50 %' then Label1.Caption:='Spielresourcen werden freigegeben ...';
if Label2.Caption='50 %' then timer2.interval:=100;
if Label2.Caption='76 %' then Label1.Caption:='SpielDatenbank wird geoeffnet ...';
if Label2.Caption='76 %' then timer2.interval:=35;
if Label2.Caption='86 %' then label1.Caption:='Viel Glueck und Gut Holz !!!';
if Label2.Caption='86 %' then timer2.Interval:=1000;
if Label2.Caption='97 %' then label1.caption:= 'Programm wird gestartet !!!';
if Label2.Caption='100 %' then timer2.Enabled:=false;
if Label2.Caption='100 %' then Label2.visible:=false;
if Label2.Caption='100 %' then label1.Visible:=false;
if Label2.Caption='100 %' then image1.Visible:=false;
if Label2.Caption='100 %' then
Was... zur... HÖLLE!? Mit sowas holt man sich moralische Fingerkloppe, aber das tut man nicht in Programme! :shock:

Natcree 5. Feb 2014 22:39

AW: Compiliertes Programm läuft nicht auf XP
 
Zitat:

HOLY FUCK! 4096 Regions!! Das MSDN sagt nichts darüber, dass die Original-Regions bei CombineRgn() deleted werden. Das heisst, dass du da vermutlich wirklich das System um massig Handles und GDI Ressourcen betrügst. Eventuell mosert XP auch deswegen.
nein das funktioniert habe es ausprobiert ohne video in einem anderen programm

genauso auch die layered geschichte.

naja und zur fingerkloppe grins hast recht wollte nur was auf die schnelle machen. Bin halt noch ein newbeeeeeeeeee

Medium 6. Feb 2014 00:45

AW: Compiliertes Programm läuft nicht auf XP
 
Nichtsdestotrotz solltest du das dringend korrigieren. Und sein Programm künstlich langsamer zu machen als nötig hat auch ein Beginner nicht nötig. Glaub mir, dass kommt bei größeren Projekten ganz von alleine. Sei doch eher froh um schnelle Starts, und freue dich, dass die User ohne viel Umschweife sofot ans "usen" kommen :)

Ich würde als nächstes dann wohl ein frisches Projekt machen, das wirklich nur den Mediaplayer enthält und dein Video abspielt. Komplett schmucklos, ohne Transparenzen und allem anderen. Nur der Mediaplayer und die zwei Events die du für dessen Steuerung nutzt. Ist ja in 2min zusammengeklickert. Wenn das ggf. auf XP dann laufen sollte, nach und nach die anderen Dinge reinbauen, und sobald es knallt, ist der letzte Schritt dein wahrer Übeltäter. Hat man den, wieder ein Testprojekt mit NUR diesem Vorgang. Wenn der alleine auch knallt, dann hat man den Fehler meist schnell gefunden. Wenn nicht, ist es ein komplizierteres kombiniertes Problem. Ab dann können wir hier vermutlich anfangen wirklich zu helfen, weil wir haben weder dein Programm, noch ist das Problem ein allgemein bekanntes.

Natcree 6. Feb 2014 09:21

AW: Compiliertes Programm läuft nicht auf XP
 
okay dann werde ich mich so rann tasten.

hoika 6. Feb 2014 11:00

AW: Compiliertes Programm läuft nicht auf XP
 
Hallo,

lade dir MadExcept runter (ist frei).
Dann bei Projekt/MadExcept Haken setzen,
die Exe mit alle Debug-Optionen und bei den Linker-Optionen externe DebugSymbole und TD32 anklicken.

Danach zeigt dir MadExcept exakt die Zeile an, die fehlschlägt.


Heiko

Natcree 6. Feb 2014 11:47

AW: Compiliertes Programm läuft nicht auf XP
 
So habe jetzt nur noch video zu laufen

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls,shellapi, MPlayer, StdCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    MediaPlayer1: TMediaPlayer;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure MediaPlayer1Notify(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}
procedure Delay(Milliseconds: Integer);
var
  Tick: DWord;
  Event: THandle;
begin
  Event := CreateEvent(nil, False, False, nil);
  try
    Tick := GetTickCount + DWord(Milliseconds);
    while (Milliseconds > 0) and
          (MsgWaitForMultipleObjects(1, Event, False, Milliseconds, QS_ALLINPUT) <> WAIT_TIMEOUT) do
    begin
      Application.ProcessMessages;
      if Application.Terminated then Exit;
      Milliseconds := Tick - GetTickcount;
    end;
  finally
    CloseHandle(Event);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
mediaplayer1.Play;
panel1.Align:=alclient;
borderstyle:=bsnone;
end;

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
  if mediaplayer1.NotifyValue = nvSuccessful then begin
    mediaplayer1.Play;
  end;
end;
so an dem code schnipsel muss irgendwas sein was xp nicht will

Natcree 6. Feb 2014 11:49

AW: Compiliertes Programm läuft nicht auf XP
 
habe madexcept installiert da ich aber auf win 7 progge und auf dem XP rechner kein delphi ist kann ich madexcept nicht wirklich nutzten.

Medium 6. Feb 2014 11:53

AW: Compiliertes Programm läuft nicht auf XP
 
Dann könnte man noch gucken, ob die bloße Existenz des Mediaplayers Probleme macht. Also das Video mal weder laden noch abspielen. Wenn das geht, mal ein anderes Video nehmen, dass der Windows Mediaplayer auf dem XP System fehlerfrei abspielt, und das im Programm testen. (Auch mal gucken, ob der dein Video abspielen kann, oder evtl. mit einem ähnlichen Fehler abraucht.) Dann ließe sich das Problem potenziell auf den Codec selbst einschränken, in welchem Fall ich vorschlagen würde, das Video mit einem anderen zu transcoden. (Wenn es ein AVI ist, eignet sich VirtualDub prima für sowas.)
Edit: MadExcept wird doch einkompiliert.

Natcree 6. Feb 2014 11:56

AW: Compiliertes Programm läuft nicht auf XP
 
das video welches ich nutze spielt das xp system fehlerfrei ab.

Das madexcept mit einkompiliert wird wusste ich nicht. okay

jaenicke 6. Feb 2014 12:03

AW: Compiliertes Programm läuft nicht auf XP
 
Versuch einfach einmal das Abspielen erst zu starten, wenn das Programm läuft. Ich kann mir durchaus vorstellen, dass es Probleme gibt, wenn man beim Erstellen des Fensters, und damit bevor es sichtbar ist, anfängt ein Video abzuspielen.

Natcree 6. Feb 2014 12:06

AW: Compiliertes Programm läuft nicht auf XP
 
Liste der Anhänge anzeigen (Anzahl: 1)
hier ist der bugreport

Natcree 6. Feb 2014 12:09

AW: Compiliertes Programm läuft nicht auf XP
 
sieht aus als wenn es der tmediaplayer ist... hmmmm????

jaenicke 6. Feb 2014 12:55

AW: Compiliertes Programm läuft nicht auf XP
 
Hast du denn versucht Play erst z.B. in einem Buttonklick aufzurufen?

Und ansonsten wäre vielleicht eher das WindowsMediaPlayer Control oder Komponenten wie das DSPack sinnvoll, denn TMediaPlayer ist ja eher ein Notbehelf als eine ernsthafte Videoplayerkomponente.

Natcree 6. Feb 2014 14:40

AW: Compiliertes Programm läuft nicht auf XP
 
ja geht auch nicht aber im bug report weisst er hierhin

date/time : 2014-02-06, 15:38:00, 281ms
computer name : KARSTEN
wts client name : NATCREE
user name : Karsti <admin>
registered owner : Cyberia & Co Inc.
operating system : Windows XP Service Pack 3 build 2600
system language : German
system up time : 47 minutes 22 seconds
program up time : 1 second
processors : 2x Intel(R) Pentium(R) 4 CPU 3.20GHz
physical memory : 1191/1526 MB (free/total)
free disk space : (C:) 17,43 GB
display mode : 1280x1024, 16 bit
process id : $820
allocated memory : 9,92 MB
largest free block : 970,12 MB
executable : Project1.exe
exec. date/time : 2014-02-06 13:02
compiled with : Delphi 7
madExcept version : 4.0.9
callstack crc : $a383c3da, $7a281a6d, $7a281a6d
exception number : 1
exception class : EMCIDeviceError
exception message : Fehler beim Starten von MCI.

004c28bd +18d Project1.exe MPlayer 856 +40 TMediaPlayer.Open

disassembling:
[...]
004c28a9 call +$15de ($4c3e8c) ; MPlayer.TMediaPlayer.GetErrorMessage

Natcree 6. Feb 2014 14:50

AW: Compiliertes Programm läuft nicht auf XP
 
wenn ich autoopen rausnehme dann startet er aber meckert weil devic
e nicht open ist

Klaus01 6. Feb 2014 15:08

AW: Compiliertes Programm läuft nicht auf XP
 
Hallo,

hilft das? EMCIDeviceError.

Der mediaplayer in Delphi kapselt meines Wissen mplayer2.exe.
Wenn Du diese direkt aufrufst, kannst Du dann die Datei abspielen?

Grüße
Klaus

himitsu 6. Feb 2014 15:30

AW: Compiliertes Programm läuft nicht auf XP
 
Zitat:

Zitat von Medium (Beitrag 1246877)
Was... zur... HÖLLE!? Mit sowas holt man sich moralische Fingerkloppe, aber das tut man nicht in Programme! :shock:

Und dazu noch
Delphi-Quellcode:
form1.DoubleBuffered:=true;
im TForm1.FormCreate .
Man greift nicht auf diese globalen Variablen zu, vorallem nicht, wenn man sich schon in der Klasse befindet.

Zitat:

Delphi-Quellcode:
panel1.Align:=alclient;
borderstyle:=bsnone;

Das hätte man doch auch schon im OI einstellen können?

Und
Delphi-Quellcode:
mediaplayer1.Play;
ist im Create auch nicht sonderlich gut.
Ich hätte das maximal im OnShow gemacht.

Natcree 6. Feb 2014 15:43

AW: Compiliertes Programm läuft nicht auf XP
 
Zitat:

hilft das? EMCIDeviceError.

Der mediaplayer in Delphi kapselt meines Wissen mplayer2.exe.
Wenn Du diese direkt aufrufst, kannst Du dann die Datei abspielen?
ne wie setze ich das um ?

Klaus01 6. Feb 2014 15:52

AW: Compiliertes Programm läuft nicht auf XP
 
.. Startbutton ->run: mplayer2 eingeben
Abzuspielende Datei öffnen und dann abspielen.

Grüße
Klaus

p80286 6. Feb 2014 16:46

AW: Compiliertes Programm läuft nicht auf XP
 
Zitat:

Zitat von jaenicke (Beitrag 1246920)
Versuch einfach einmal das Abspielen erst zu starten, wenn das Programm läuft. Ich kann mir durchaus vorstellen, dass es Probleme gibt, wenn man beim Erstellen des Fensters, und damit bevor es sichtbar ist, anfängt ein Video abzuspielen.

Zitat:

Zitat von himitsu (Beitrag 1246976)
Und
Delphi-Quellcode:
mediaplayer1.Play;
ist im Create auch nicht sonderlich gut.
Ich hätte das maximal im OnShow gemacht.

Ob es jetzt ankommt?

Gruß
K-H

Natcree 8. Feb 2014 13:42

AW: Compiliertes Programm läuft nicht auf XP
 
@p80286 habe ich schon umgestellt hat auch nichts gebracht.

Habe die video datei in eine swf umgewandelt und über den Flashplayer abegespielt. Nun funktioniert es. Das Problem ist mit dem Mediaplayer immer noch nicht behoben. Aber so habe ich erstmal ersatz.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz