AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Compiliertes Programm läuft nicht auf XP
Thema durchsuchen
Ansicht
Themen-Optionen

Compiliertes Programm läuft nicht auf XP

Ein Thema von Natcree · begonnen am 4. Feb 2014 · letzter Beitrag vom 8. Feb 2014
Antwort Antwort
Seite 1 von 2  1 2      
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#1

AW: Compiliertes Programm läuft nicht auf XP

  Alt 5. Feb 2014, 22:21
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!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Compiliertes Programm läuft nicht auf XP

  Alt 5. Feb 2014, 22:39
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
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Compiliertes Programm läuft nicht auf XP

  Alt 6. Feb 2014, 00:45
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Compiliertes Programm läuft nicht auf XP

  Alt 6. Feb 2014, 09:21
okay dann werde ich mich so rann tasten.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Compiliertes Programm läuft nicht auf XP

  Alt 6. Feb 2014, 11:00
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
Heiko
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Compiliertes Programm läuft nicht auf XP

  Alt 6. Feb 2014, 11:47
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
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Compiliertes Programm läuft nicht auf XP

  Alt 6. Feb 2014, 11:49
habe madexcept installiert da ich aber auf win 7 progge und auf dem XP rechner kein delphi ist kann ich madexcept nicht wirklich nutzten.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#8

AW: Compiliertes Programm läuft nicht auf XP

  Alt 6. Feb 2014, 11:53
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#9

AW: Compiliertes Programm läuft nicht auf XP

  Alt 6. Feb 2014, 15:30
Was... zur... HÖLLE!? Mit sowas holt man sich moralische Fingerkloppe, aber das tut man nicht in Programme!
Und dazu noch 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 mediaplayer1.Play; ist im Create auch nicht sonderlich gut.
Ich hätte das maximal im OnShow gemacht.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: Compiliertes Programm läuft nicht auf XP

  Alt 6. Feb 2014, 15:43
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 ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz