AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

EReadError nur auf einem Rechner

Ein Thema von Gruber_Hans_12345 · begonnen am 20. Jan 2009 · letzter Beitrag vom 20. Jan 2009
Antwort Antwort
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#1

EReadError nur auf einem Rechner

  Alt 20. Jan 2009, 08:23
Habe auf einem Kundenrechner ein Problem bekomme dort beim Starten einen EReadError mit

Fehler beim Lesen von TextLabel.Lines.Strings: Zugriffsverletzung bei Adresse 038D0000. Schreiben von Adresse 038D0000

das Problem ist, in der Unit, wo er einen Fehler bekommt (ist ein Splash screen) gibt es kein TextLabel.
Der Fehler kommt beim

Delphi-Quellcode:
constructor TfrSplash.Create(AOwner: TComponent; aIsTerminalServer : Boolean);
begin
    AddFullDebug('TfrSplash.Create.1');
    inherited Create(AOwner); << hier kommt der Fehler
    AddFullDebug('TfrSplash.Create.2');
end;
FormCreate wird nicht mehr aufgerufen
CreateParams wird noch richtig aufgerufen

Das ist der Stack zu dem Zeitpunkt ...
Code:
<Call="Forms.Forms.TApplication.HandleException" Offset="6" LineNumber="8256"/>
<Call="Controls.Controls.TWinControl.MainWndProc" Offset="9" LineNumber="7079"/>
<Call="Forms.Forms.TControlScrollBar.Update" Offset="20" LineNumber="2341"/>
<Call="Forms.Forms.TScrollingWinControl.UpdateScrollBars" Offset="16" LineNumber="2480"/>
<Call="Forms.Forms.TScrollingWinControl.WMSize" Offset="22" LineNumber="2598"/>
<Call="System.System.TObject.Dispatch"/>
<Call="Controls.Controls.TControl.WndProc" Offset="83" LineNumber="5146"/>
<Call="Controls.Controls.TWinControl.WndProc" Offset="111" LineNumber="7304"/>
<Call="Forms.Forms.TCustomForm.WndProc" Offset="136" LineNumber="3512"/>
<Call="Classes.Classes.TThreadList.UnlockList"/>
<Call="Graphics.Graphics.FreeMemoryContexts" Offset="12" LineNumber="5060"/>
<Call="Controls.Controls.TWinControl.MainWndProc" Offset="3" LineNumber="7073"/>
<Call="Classes.Classes.StdWndProc"/>
<Call="Controls.Controls.TWinControl.DefaultHandler" Offset="23" LineNumber="7334"/>
<Call="Forms.Forms.TCustomForm.DefaultHandler" Offset="7" LineNumber="4576"/>
<Call="Controls.Controls.TControl.WMWindowPosChanged" Offset="1" LineNumber="5409"/>
<Call="Controls.Controls.TWinControl.WMWindowPosChanged" Offset="11" LineNumber="7720"/>
<Call="Controls.Controls.TControl.WndProc" Offset="83" LineNumber="5146"/>
<Call="SysUtils.SysUtils.FormatBuf"/>
<Call="SysUtils.SysUtils.FormatBuf"/>
<Call="SysUtils.SysUtils.FormatBuf"/>
<Call="SysUtils.SysUtils.FormatBuf"/>
<Call="Controls.Controls.TWinControl.WndProc" Offset="111" LineNumber="7304"/>
<Call="System.System.@LStrFromPCharLen"/>
<Call="SysUtils.SysUtils.FmtStr"/>
<Call="Classes.Classes.TList.Delete"/>
<Call="Controls.Controls.TWinControl.WndProc" Offset="111" LineNumber="7304"/>
<Call="Forms.Forms.TCustomForm.WndProc" Offset="136" LineNumber="3512"/>
<Call="Classes.Classes.TThreadList.UnlockList"/>
<Call="Graphics.Graphics.FreeMemoryContexts" Offset="12" LineNumber="5060"/>
<Call="Forms.Forms.TCustomForm.WndProc" Offset="136" LineNumber="3512"/>
<Call="Controls.Controls.TWinControl.MainWndProc" Offset="3" LineNumber="7073"/>
<Call="Classes.Classes.StdWndProc"/>
<Call="Forms.Forms.TCustomForm.SetMenu" Offset="27" LineNumber="4032"/>
<Call="Forms.Forms.TCustomForm.DefaultHandler" Offset="7" LineNumber="4576"/>
<Call="Forms.Forms.TCustomForm.WMNCCreate" Offset="2" LineNumber="4941"/>
<Call="Controls.Controls.TControl.WndProc" Offset="83" LineNumber="5146"/>
<Call="Controls.Controls.TWinControl.WndProc" Offset="111" LineNumber="7304"/>
<Call="Forms.Forms.TCustomForm.WndProc" Offset="136" LineNumber="3512"/>
<Call="Controls.Controls.TWinControl.MainWndProc" Offset="3" LineNumber="7073"/>
<Call="Classes.Classes.StdWndProc"/>
<Call="Controls.Controls.InitWndProc" Offset="30" LineNumber="2072"/>
<Call="Windows.Windows.CreateWindowEx"/>
<Call="Controls.Controls.TWinControl.CreateWindowHandle" Offset="1" LineNumber="6778"/>
<Call="Forms.Forms.TCustomForm.CreateWindowHandle" Offset="25" LineNumber="4507"/>
<Call="Controls.Controls.TWinControl.CreateWnd" Offset="21" LineNumber="6762"/>
<Call="Classes.Classes.TReader.ReadValue"/>
<Call="Classes.Classes.TReader.CheckValue"/>
<Call="Classes.Classes.TReader.ReadListEnd"/>
<Call="Classes.Classes.TReader.ReadDataInner"/>
<Call="System.System.SysReallocMem"/>
<Call="Forms.Forms.TScrollingWinControl.CreateWnd" Offset="1" LineNumber="2374"/>
<Call="Forms.Forms.TCustomForm.CreateWnd" Offset="1" LineNumber="4432"/>
<Call="Controls.Controls.TWinControl.CreateHandle" Offset="3" LineNumber="6883"/>
<Call="Controls.Controls.TWinControl.HandleNeeded" Offset="4" LineNumber="8894"/>
<Call="Controls.Controls.TWinControl.GetHandle" Offset="1" LineNumber="8900"/>
<Call="Forms.Forms.TCustomForm.GetClientRect" Offset="1" LineNumber="3216"/>
<Call="Controls.Controls.TControl.GetClientHeight" Offset="1" LineNumber="3994"/>
<Call="Controls.Controls.TWinControl.ReadState" Offset="3" LineNumber="6096"/>
<Call="Controls.Controls.TControl.SetClientWidth" Offset="1" LineNumber="3989"/>
<Call="Controls.Controls.TWinControl.ReadState" Offset="9" LineNumber="6102"/>
<Call="Forms.Forms.TCustomForm.ReadState" Offset="33" LineNumber="3062"/>
<Call="Classes.Classes.TReader.ReadRootComponent"/>
<Call="Classes.Classes.TReader.ReadRootComponent"/>
<Call="Classes.Classes.TStream.ReadComponent"/>
<Call="Classes.Classes.InternalReadComponentRes"/>
<Call="Classes.Classes.InitComponent"/>
<Call="Controls.Controls.TWinControl.WndProc" Offset="111" LineNumber="7304"/>
<Call="System.System.@AfterConstruction"/>
<Call="System.System.TObject.Create"/>
<Call="Classes.Classes.InitInheritedComponent"/>
<Call="Classes.Classes.InitInheritedComponent"/>
<Call="Forms.Forms.TCustomForm.Create" Offset="8" LineNumber="2851"/>
<Call="Forms.Forms.TCustomForm.Create" Offset="16" LineNumber="2859"/>
<Call="System.System.@WStrClr"/>
<Call="System.System.UTF8Decode"/>
<Call="System.System.SysReallocMem"/>
<Call="System.System.TObject.NewInstance"/>
<Call="System.System.@ClassCreate"/>
<Call="frSplash.frSplash.TfrSplash.Create" Offset="1" LineNumber="246"/>
hat jemand einen hinweis zu dem problem?

das progamm läuft auf über 100 rechner ohne probleme, und es ist auch nichts auffälliges sonst zu sehen auf dem rechner (XP SP3 alles Standard)
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

Re: EReadError nur auf einem Rechner

  Alt 20. Jan 2009, 08:47
Hallo,

habt Ihr die Exe auf dem Kundenrechner schonmal ausgetauscht, eventuell ist diese beschädigt.
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#3

Re: EReadError nur auf einem Rechner

  Alt 20. Jan 2009, 08:53
Zitat von nahpets:
Hallo,

habt Ihr die Exe auf dem Kundenrechner schonmal ausgetauscht, eventuell ist diese beschädigt.
ja, schon öfters, habe ja schon einige debug meldungen eingebaut um zu sehen, woran es genau liegt ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

Re: EReadError nur auf einem Rechner

  Alt 20. Jan 2009, 09:22
Hallo,

hast Du mal ein Programm geschrieben, dass nur so ein TextLabel enthält und geschaut, ob das Programm funktioniert?
Von welchem Typ ist TextLabel? Ist das irgendeine Windowskomponente..., die in Delphi gekapselt ist und (dummerweise) auf diesem einen Rechner fehlt oder in einer anderen Version vorliegt?

Will sagen, das muss nicht zwingend ein Fehler in Deinem Programm sein, es kann auch sein, dass das System auf dem Problemrechner irgendwie ein bisserl anders ist, als alle anderen.

Der Fehler läßt vermuten, dass das Programm etwas anderes aus dem Stream lesen will, als dort drin ist.
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#5

Re: EReadError nur auf einem Rechner

  Alt 20. Jan 2009, 11:25
Das problem ist aber, das dieses Form, was er da lädt, gar kein TEXTLABEL besitzt.

Keine Ahnung warum er versucht da was zu laden, wo es nix gibt ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

Re: EReadError nur auf einem Rechner

  Alt 20. Jan 2009, 11:45
Hallo,

das ist aber seeeeehr komisch.

Was steht den in AOwner drin, was ist das für eine Klasse?
Von was ist TfrSplash abgeleitet?
Hat garantiert kein Vorfahre von irgendwem ein TextLabel?

Kannst Du in das inherited Create(AOwner); hineindebuggen?
Durchsuche mal das gesamte Projekt, ob da irgendwo ein Textlabel vorkommt, das in der Vererbungshierarchie bei einem Vorfahren von TfrSplash angesiedelt ist.

Funktioniert ein inherited Create(Nil); (unabhängig von eventuell später auftretenden negativen Nebenwirkungen)?

Mir ist es mehrmals passiert, dass ich auf Zugriffsverletzungen gestoßen bin, wobei der Fehler nicht an der Stelle aufgetreten ist, die mir Debugger und Fehleradresse meldeten, sondern die Fehler waren "kurz" vorher.
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#7

Re: EReadError nur auf einem Rechner

  Alt 20. Jan 2009, 15:07
TfrSplash ist von TForm abgeleitet


Delphi-Quellcode:
  TfrSplash = class(TForm)
    trLogin: TTimer;
    pmServers: TTBXPopupMenu;
    trAutoLogin: TTimer;
    ilFlags: TImageList;
    procedure FormCreate(Sender: TObject);
    procedure trLoginTimer(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure pmServersPopup(Sender: TObject);
    procedure trAutoLoginTimer(Sender: TObject);
  private
also Owner habe ich einmal Application und einmal nil übergeben, beides macht den selben Fehler ...

Ich verstehe es auch nicht wirklich, habe zwar auch schon öfters komische sachen gesehen, die dann ganz anders waren als vorerst offensichtlich, aber das ist schon sehr sehr komisch ...

Problem ist, auf dem Kundenrechner kann ich nicht debugen, sonst wäre es wahrscheinlich ein kinderspiel ....

dachte schon es hat was mit der codierung zu tun (hat vorhin mal ein problem, das ein sourcecode nicht ansi codiert war, und deshalb der Commandline compiler abgebrochen hat)

aber hier?!?!?!?
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

Re: EReadError nur auf einem Rechner

  Alt 20. Jan 2009, 15:34
Hallo,

befürchte, Du mußt hier mal auf Deinem Rechner mit dem Debugger da durch und einfach die einzelnen Zeilen beobachten, ob Du da irgendwo an 'nem TextLabel vorbei kommst.

Ansonsten: Kannst Du pmServers: TTBXPopupMenu; mal durch pmServers: TPopupMenu; ersetzen oder das Menü auch mal ganz rausnehmen? Oder kannst Du feststellen, ob da eventuell intern irgendwo ein TextLabel genutzt wird.

Oder kannst Du ein anderes Formular anstelle des Splashformulars einbinden, dass ansonsten die gleiche Funktionalität hat oder zumindest soweit funktioniert, dass Du beim Programmstart über die "fehlerhafte" Stelle hinwegkommst?

'ne Idee zum systematischen Suchen hab' ich momentan zugegebenermaßen nicht.
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:17 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