Bilder und Dateien speichern-Fehler SigSev

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
trajektorde
Beiträge: 5
Registriert: Do 6. Jan 2011, 06:08

Bilder und Dateien speichern-Fehler SigSev

Beitrag von trajektorde »

Hallo, bin langsam verzweifelt.
Habe längeres Programm geschrieben, auf dem Bildschirm funktioniert alles,
wenn ich aber ein array abspeichern will oder auch ein Image1.picture, bekomme ich nur fehlermeldungen.
(program raised exception SIGSEV ...)
Die Sigsev- Fehlermeldung kommt sonst immer, wenn ich ein Array falsch anspreche, welches z.B. andere Grenzen hat.

In einem kleinen Prüfprogramm funktioniert aber z.B.

Form1.Image1.Picture.Savetofile +++ einwandfrei(eigentlich klar, aber..),
sobald ich dieselben Zeilen in ein Unterprogramm des größeren Programms packe, kommt eine Fehlermeldung.
Es gibt aber Form1, Image1 etc., die unterprogramme funktionieren sonst gut.

Woran kann das liegen?
(Die Fehlermeldungen beim Speichern von Dateien und arrays kommen bei allen möglichen Versuchen, auch wenn solche(nach beispielprogrammen aus dem netz) in einem extra programm funktionieren(z.B. über memorystream)

Gibt es da irgendetwas das ich wissen sollte/müsste-(newbie)?
in hope, trajektorde

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Bilder und Dateien speichern-Fehler SigSev

Beitrag von Socke »

Eine Zugriffsverletzung tritt immer dann auf, wenn dein Programm auf einen Speicherbereich zugreifen will, dass ihm vom Betriebssystem nicht zugewiesen wurde. Wenn du aber an einer Stelle auf Speicher zugreifst, der deinem Programm zugewiesen ist, aber z.B. eine Objektvariable enthält, bekommst du nicht sofort einen Fehler sondern erst, wenn du wieder versuchst auf das Objekt zuzugreifen.
Den häufigen Fehler, dass die Objekte an sich fehlen, hast du -- wie du schreibst -- schon ausgeschlossen. Ohne Code kann dir hier aber kaum jemand helfen; daher die Empfehlung alle Überprüfungen in den Compileroptionen einschalten und noch einmal alle Zuweisungen und alle Speicheroperationen auf ihre Gültigkeit hin überprüfen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

trajektorde
Beiträge: 5
Registriert: Do 6. Jan 2011, 06:08

Re: Bilder und Dateien speichern-Fehler SigSev

Beitrag von trajektorde »

danke für die schnelle Antwort, muss das einmal versuchen, mit Compilereinstellungen.
also die Objekte existieren glaube ich schon, ich kann in den arrays zahlen abspeichern und abrufen, auf dem
Image1.Picture zeichnen etc.
(Ginge doch wohl nicht, wenn die Objekte erst noch kreiert werden müssten(?))

mal sehen,

grüße erstmal

trajektorde

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Bilder und Dateien speichern-Fehler SigSev

Beitrag von MAC »

da gibt es jetzt 3 wahrscheinliche fehlerquellen:
1. Form1.Image1.Picture existiert nicht oder zeigt auf nil. //unwahrscheinlich
2. Form1.Image1 exsistiert nicht oder zeigt auf nil
3. Form1 existiert nicht oder zeigt auf nil.

Da hilf dir auf jedenfall der debugger...
einfach mal

Code: Alles auswählen

var 
  debug:TTImage;
begin
debug := Form1.Image1;
//breakpoint
Form1.Image1.Picture.SavetoFile
...
...
dann schauen welchen wert debug hat...

Code: Alles auswählen

Signatur := nil;

trajektorde
Beiträge: 5
Registriert: Do 6. Jan 2011, 06:08

Re: Bilder und Dateien speichern-Fehler SigSev

Beitrag von trajektorde »

hallo Mac,

das ergebnis ist:

debug: 0 x 132

self 0 x 131
Sender 0 x 117

(das image ist ziemlich groß, so ca.1100x 700 pixel)

sagt das was?(Im projekt sind 2 units irgendwie beteiligt, eine hauptunit(meine ich zumindest), auf der auf das Image gezeichnet wird, und dann noch eine zweite, in der ein paar objektdefinitionen sind(unter uses eingebunden)
allerdings hat diese unit auch eine form1 und ein image1, vielleicht ist da ein problem?
grüße, trajektorde

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Bilder und Dateien speichern-Fehler SigSev

Beitrag von MAC »

du hast 2 form1 ?
oder heißt die andere form2 ?
sonnst aufjedenfall in form2 oder ähnliches umbenennen...

die werte haben eigentlich nichts mit der größe zu tun 0x131 ist ein pointer - welche auf den platz zeigt wo image1 im arbeitsspeicher gespeichert ist.
Wenn es 0x0 währe wüsste ich das imae1 nicht existiert - normalerweise ist die zahl zwar 6 stellig (also 0xYYYYYY) aber naja...

Andernfalls hilft nur der code oder zumindestens alles was mit image 1 zu tun hat, da das progblem ,wie gesagt nur in dem projekt auftaucht...

Code: Alles auswählen

Signatur := nil;

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Bilder und Dateien speichern-Fehler SigSev

Beitrag von Socke »

trajektorde hat geschrieben:debug: 0 x 132

self 0 x 131
Sender 0 x 117
Das sind ziemlich ungewöhnliche Werte für Objekte; Dezimal ausgedrückt wären das: debug = 306, self = 305, Sender = 279. Es ist schlichtweg sehr unwahrscheinlich (bis unmöglich), dass das Formular (Self) nur ein Byte groß ist, und dass dann direkt im Anschluss dahinter das TImage gespeichert ist.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten