Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   EAccessviolation -> Unit Doscommand??? (https://www.delphipraxis.net/150431-eaccessviolation-unit-doscommand.html)

viakt133 16. Apr 2010 11:26


EAccessviolation -> Unit Doscommand???
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

bin einigermassen ratlos, weil ich an dieser Stelle, ab Zeile 380 in der Unit Doscommand die EAccessviolation erhalte. Kann mir nicht erklären, warum.

Hier der Codeausschnitt:

Delphi-Quellcode:
                    FOutputLines.Add(Str);
                if Assigned(FOnNewLine) then
                  FOnNewLine(FOwner, Str, otEntireLine);
                Str := '';
Wer kann mir helfen? Hab die Unit mal dazu gepackt, siehe Anhang.

DeddyH 16. Apr 2010 11:29

Re: EAccessviolation -> Unit Doscommand???
 
Und welche Meldung kommt da?

guinnes 16. Apr 2010 11:37

Re: EAccessviolation -> Unit Doscommand???
 
Das ist scheinbar die Version, die Sirius nochmal überarbeitet hat. Die hier Tut bei mir problemlos

SirThornberry 16. Apr 2010 12:06

Re: EAccessviolation -> Unit Doscommand???
 
Generell ist es bei Fehlermeldung hilfreich im Detail zu nennen. Bei einer Zugriffsverletzung tauchen auch einige Adressen auf welche bei der Fehlersuche mitunter sehr interessant sind.

viakt133 16. Apr 2010 12:47

Re: EAccessviolation -> Unit Doscommand???
 
Danke @guinnes, mit dieser Version klappt es!

@DeddyH + @SirThornberry,

Hatte folgende Fehlermeldungen :

Zugriffsverlatzung bei Adresse $0048AE00 in Modul <meine.exe>
Lesen von Adresse $FFFFFFFF

Der Debuggercursor war dann auf dem angegebenen Textausschnitt.

Die Version von guinnes funzt zwar erst mal, aber vielleicht kann ich bei der Fehlersuche in der vorherigen Version noch was lernen. Die Version von guinnes musste ja auch irgendwer berichtigen.

Kann also nich verkehrt sein, die Fehlerursache nachzuvollziehen.

sirius 16. Apr 2010 13:09

Re: EAccessviolation -> Unit Doscommand???
 
Zitat:

Zitat von viakt133
Die Version von guinnes musste ja auch irgendwer berichtigen.

Das war ich.

Zitat:

Die Version von guinnes funzt zwar erst mal, aber vielleicht kann ich bei der Fehlersuche in der vorherigen Version noch was lernen.
In TDoscommand wird ein Thread verwendet, der quasi die Console "steuert". Und die drei wichtigsten Regeln bei der Threadprogrammierung sind:
  1. synchronisieren
  2. synchronisieren
  3. synchronisieren
Und genau das wurde in deiner Version nicht gemacht. Dadurch kommt es häufig (evtl. sogar zufällig) zu Zugriffsverletzungen.

Edit: Hier gab es auch schon eine verbesserte Version, welche den Fehler aufgriff, dafür hatte sie in meinen Augen andere Mankos.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:04 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