Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   was ist eine SIGSEGV-Verletzung? (https://www.delphipraxis.net/209470-ist-eine-sigsegv-verletzung.html)

Adenos 11. Dez 2021 14:21

was ist eine SIGSEGV-Verletzung?
 
ich versuche, eine XML-Datei in ein Stringgrid einzulesen. Dabei meldet der Compiler eine SIGSEGV-Verletzung. Was könnte damit gemeint sein?

KodeZwerg 11. Dez 2021 14:40

AW: was ist eine SIGSEGV-Verletzung?
 
Diese Meldung erscheint oft wenn man Dinge doppelt deklariert hat, ob es bei Dir der fall ist kann man aufgrund fehlendes codes schwer einschätzen.

/Edit
(Der Compiler kann sich nicht entscheiden welches Objekt angesprochen werden soll)

TurboMagic 11. Dez 2021 15:33

AW: was ist eine SIGSEGV-Verletzung?
 
Läuft das unter Andoid bzw. einem anderen Nicht-Windows OS?
Falls ja: dann ist das eher das Pendant zur Allgemeinen Schutzverletzung unter WIndows.
Normalerweise ist doch nach dem SIGSEGV eine Zahl in Klammern. Das ist glaube ich die genauere Fehlerursache.

SEGV steht glaube ich für Segment-Violation und SIG für Signl oder so...

Ist bei dir vielleicht irgendwas nil bzw. nicht/nicht mehr richtig erzeugt?

Grüße
TurboMagic

Adenos 11. Dez 2021 16:39

AW: was ist eine SIGSEGV-Verletzung?
 
ich versuche eine XML-Datei in ein Striggrid einzulesen:
with Doc.DocumentElement.FindNode('Cube').FirstChild.Ch ildNodes do
begin
StringGridEZB.RowCount:=count+2;
for i := 1 to (Count) do
begin
StringGridEZB.Cells[1,(i)] := Item[i].Attributes.GetNamedItem('currency').NodeValue;
StringGridEZB.Cells[2,(i)] := Item[i].Attributes.GetNamedItem('rate').NodeValue;
end;
end;
aber der Compiler meldet eine SIGSEGV-Verletzung. Das Programm meldet ebenfalls eine Zugriffsverletzung, obwohl im Stringgrid die korrekten Werte eingetragen sind.

Delphi.Narium 11. Dez 2021 17:29

AW: was ist eine SIGSEGV-Verletzung?
 
Mach' das Ganze bitte mal ohne das With, auch wenn das mehr Schreibarbeit wird.

Mir ist jetzt so auf die Schnelle nicht klar, zu wem denn bitteschön count gehört.

Arrays, ... fangen in der Regel bei 0 an und damit laufen Schleifen meist von 0 bis Count - 1.

Statt
Delphi-Quellcode:
for i := 1 to (Count) do
hätte ich hier jetzt
Delphi-Quellcode:
for i := 0 to (Count - ) do
erwartet.

Der von Dir beobachtete Fehler könnte hier also durchaus beim Zugriff auf
Delphi-Quellcode:
Item[i].Attributes
auftreten, wenn i = count ist. Das wäre dann das erste Element "hinter" dem letzten Element, also ein Element, das es nicht gibt. Dies könnte dann Zugriffsverletzung bzw. SIGSEGV erklären.

Adenos 13. Dez 2021 01:27

AW: was ist eine SIGSEGV-Verletzung?
 
ja, vielen Dank. Das war wohl der Fehler.


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