Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Programm startet nicht nicht (https://www.delphipraxis.net/18362-programm-startet-nicht-nicht.html)

HomerGER 17. Mär 2004 11:39


Programm startet nicht nicht
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hallo ich hab ein programm geschrieben
hier anzuschauen
wenn man das programm starten will, meldet er das ein fehler vorliegt und windows den fehler senden will
das macht er auch nicht immer wenn man 2-3 mal auf starten drückt startet das programm und läuft ganz normal
da passiert auch nicht auf allen rechnern ????!!!

ich hatte erst ein fehler drauf gleitkommadivision durch null
der kam von einer jedi function
cpu_speed := CPUID.FrequencyInfo;
aber nur bei intel rechner grösser 3 gh ????
hab ne andere function genommen und dann ging es
aber bei allen die die fehler hatten , kommt die meldung habe ein fehler festgestellt und will senden - nach ein paarmal klicken startet aber das programm ohne probleme

ich hab so das gefühl der fehler tritt nur bei intel rechnern mit ner grossen cpu auf
das programm läuft nur unter xp
auf allen anderen rechner amd, centrino 1gb bis schlag mich tot läuft alles
es ist bei 3 rechnern aufgetretten - alles waren intel und über 3 gh


helft bitte

APP 17. Mär 2004 12:42

Re: Programm startet nicht nicht
 
Hallo Homer,
zeig uns ein bisserl was von Deinem Code, damit wir helfen können.

BTW: Benutzt Du TRY/FINALLY Blöcke, ist der Fehler in der JEDI-Function, kann man die vielleicht Patchen...

NicoDE 17. Mär 2004 12:49

Re: Programm startet nicht nicht
 
Wenn das Image (Demo auf dem Server) seit dem Zeitpunkt nicht geändert wurde, dann passiert die Zugriffsverletzung in TObject.Free().
Das kann alles mögliche sein und/oder ein Folgefehler sein...
Code:
TObject.Free
004039FC       test   eax, eax
004039FE       jz     short @@ret
00403A00        mov    dl, 1
00403A02        mov    ecx, [eax]
00403A04        call   dword ptr [ecx-4]
00403A07 @@ret: retn
Rubrik Nützliches: http://help.madshi.net/madExcept.htm

HomerGER 17. Mär 2004 20:36

Re: Programm startet nicht nicht
 
@APP welchen teil des codes willst du sehen
den mit den Gleitkommafehler ? der ist weg benutze jetzt
so sieht der neue code aus

Code:
//##############################################################################
//##############################################################################
//System Kurz Info CPU Info
//##############################################################################
//##############################################################################
//******************************************************************************
//Global
//System Kurz Info Anzeigen
Procedure System_KurzInfo_CPU_Auslesen_SYKU();
var
cpu_info : TCpuInfo;
begin
    //CPU
    try
        cpu_info := CPUID;
        Haupt_Form.System_KurzInfo_Label14.Caption := cpu_info.Manufacturer;
        Haupt_Form.System_KurzInfo_Label15.Caption := cpu_info.CpuName;

        Haupt_Form.System_KurzInfo_Label16.Caption := Format('%f Mhz',[dwCPUClock]);

    except
        Haupt_Form.System_KurzInfo_Label14.Caption := Element_Lesen_GU('SKI111');;
        Haupt_Form.System_KurzInfo_Label15.Caption := Element_Lesen_GU('SKI121');;
        Haupt_Form.System_KurzInfo_Label16.Caption := Element_Lesen_GU('SKI131');;
    end;

    //Prozessor Bild laden
    if (Pos('AMD', cpu_info.Manufacturer) <> 0) then
    begin
        //AMD
        Haupt_Form.System_KurzInfo_Image1.Picture.Icon := ImageShell_Icon_Lesen_GU('KurzInfo_AMD');
    end
    else if (Pos('Intel', cpu_info.Manufacturer) <> 0) then
    begin
        //Intel
        Haupt_Form.System_KurzInfo_Image1.Picture.Icon := ImageShell_Icon_Lesen_GU('KurzInfo_Intel');
    end;

    //Speicher
    Haupt_Form.System_KurzInfo_Label24.Caption := Format('%f MB',[(GetTotalPhysicalMemory / 1048576)]);
    Haupt_Form.System_KurzInfo_Label25.Caption := Format('%f MB',[((GetTotalPhysicalMemory / 1048576) - (GetFreePhysicalMemory / 1048576))]);
    Haupt_Form.System_KurzInfo_Label26.Caption := Format('%f MB',[(GetFreePhysicalMemory / 1048576)]);

    //Win
    Haupt_Form.System_KurzInfo_Label34.Caption := g_win_version_s;

    //DirectX
    Haupt_Form.System_KurzInfo_Label44.Caption := dwGetDirectXName;
    Haupt_Form.System_KurzInfo_Label45.Caption := dwReadFullDirectXVersion;
end;

das war der alte code

Code:
//##############################################################################
//##############################################################################
//System Kurz Info CPU Info
//##############################################################################
//##############################################################################
//******************************************************************************
//Global
//System Kurz Info Anzeigen
Procedure System_KurzInfo_CPU_Auslesen_SYKU();
var
cpu_info : TCpuInfo;
cpu_speed : TFreqInfo;
begin
    //CPU Info auslesen
    cpu_info := CPUID;
    //CPU Speed auslesen
    cpu_speed := CPUID.FrequencyInfo;
    GetCpuSpeed(cpu_speed);
   
    //CPU
    Haupt_Form.System_KurzInfo_Label14.Caption := cpu_info.Manufacturer;
    Haupt_Form.System_KurzInfo_Label15.Caption := cpu_info.CpuName;
    Haupt_Form.System_KurzInfo_Label16.Caption := Format('%d Mhz',[cpu_speed.RawFreq]);
    //Prozessor Bild laden
    if (Pos('AMD', cpu_info.Manufacturer) <> 0) then
    begin
        //AMD
        Haupt_Form.System_KurzInfo_Image1.Picture.Icon := ImageShell_Icon_Lesen_GU('KurzInfo_AMD');
    end
    else if (Pos('Intel', cpu_info.Manufacturer) <> 0) then
    begin
        //Intel
        Haupt_Form.System_KurzInfo_Image1.Picture.Icon := ImageShell_Icon_Lesen_GU('KurzInfo_Intel');
    end;

    //Speicher
    Haupt_Form.System_KurzInfo_Label24.Caption := Format('%f MB',[(GetTotalPhysicalMemory / 1048576)]);
    Haupt_Form.System_KurzInfo_Label25.Caption := Format('%f MB',[((GetTotalPhysicalMemory / 1048576) - (GetFreePhysicalMemory / 1048576))]);
    Haupt_Form.System_KurzInfo_Label26.Caption := Format('%f MB',[(GetFreePhysicalMemory / 1048576)]);

    //Win
    Haupt_Form.System_KurzInfo_Label34.Caption := g_win_version_s;

    //DirectX
    Haupt_Form.System_KurzInfo_Label44.Caption := dwGetDirectXName;
    Haupt_Form.System_KurzInfo_Label45.Caption := dwReadFullDirectXVersion;
end;

@ NicoDE
kannst du genauer werden ?
die fehlermeldung mit den "fehler senden" kommen noch vor der oncreate


könnte das programm jemand mal testen der ein intel cpu mit über 3 gh hat ?

NicoDE 17. Mär 2004 21:07

Re: Programm startet nicht nicht
 
Zitat:

Zitat von HomerGER
kannst du genauer werden?

Mein Beitrag bezog sich auf die Fehlermeldung 'Runtime error 216 at 00403A02'. Wenn der Fehler bei der Demo-Version auftrat, die ich heute heruntergeladen habe, dann wurde in TObject.Free() versucht TObject.FreeInstance() aufzurufen, obwohl Self (eax) kein TObject (mehr) war.
Sprich es wurde versucht ein nicht (mehr) vorhandenes Objekt freizugeben. Dies kann tausende Gründe haben und ist möglicherweise nur ein Folgefehler beim Versuch das Programm zu beenden.

Deswegen wären mehr Informationen nötig um das Problem auf einen bestimmten Bereich einzuschränken (am besten wäre ein Callstack, obwohl das bei der Aufrufkonvention register nicht gerade einfach ist...).

Ansonsten wirst Du nur mit den langwierigen Methoden vorwärts kommen (Remote-Debugging, 'kreatives' Auskommentieren, ...)
madExcept ist für nicht-kommerzielle Zwecke Lizenzkosten-frei und könnte wertvolle Hinweise bei einem Kunden mit dem Problem liefern.

HomerGER 17. Mär 2004 21:15

Re: Programm startet nicht nicht
 
@NicoDE
das hab ich schon gemacht - sprich
alles was ich in der oncreate mache
nur soweit komme ich nicht
der fehler "Fehler senden" kommt vorher - also in den augenblick wo man das programm start
was ich nur nicht verstehe - bisr jetzt - nur bei intel und rosser cpu
und ich weiß nicht wo ich da suchen soll

NicoDE 17. Mär 2004 21:24

Re: Programm startet nicht nicht
 
Zitat:

Zitat von HomerGER
der fehler "Fehler senden" kommt vorher - also in den augenblick wo man das programm start

Möglicherweise ein Problem in einem initialization-Abschnitt einer Unit/Komponente...
(von einem Fehler im RTL-Init-Code gehe ich erstmal nicht aus, obwohl es nicht ausgeschlossen ist)

HomerGER 17. Mär 2004 22:28

Re: Programm startet nicht nicht
 
aber warum nur bei bestimmten system - kann ich das irgendwie überprüfen?
habe fremdkomponenten benutzt
jedi jcl/jvcl
mxstatusbar
mxoutlookpro
delphiwoks
benutze d7 pro
das ist eigentlich alles

bei der JclSysInfo
Haupt_Form.System_KurzInfo_Label16.Caption := Format('%d Mhz',[cpu_speed.RawFreq]);
kamm der gleitkommafehler
hab ich durch Format('%f Mhz', [dwCPUClock] getauscht, dann war der fehler weg

NicoDE 18. Mär 2004 03:28

Re: Programm startet nicht nicht
 
Zitat:

Zitat von HomerGER
kann ich das irgendwie überprüfen?

Ich kann Dir nur madExcept empfehlen (wird unmittelbar nach System/SysInit/SysUtils initialisiert - sodass eine reale Chance besteht, an einen vernünftigen Call-Stack zu kommen).
Warum es nur bei Intel-Prozessoren auftritt, ist eine gute Frage... (synchrones Multithreading durch HTT?)

HomerGER 18. Mär 2004 09:05

Re: Programm startet nicht nicht
 
hab mir madExcept runtergeladen - leider ist mein englisch schlecht
weiß nicht wie ich es einbinden soll
kannst du da helfen - so das ich damit was anfangen kann ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 Uhr.
Seite 1 von 2  1 2      

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