AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Fehlermeldung "external SIGSEGV"

Ein Thema von StolenURBike · begonnen am 21. Jan 2017 · letzter Beitrag vom 2. Mai 2019
Antwort Antwort
Seite 1 von 2  1 2   
StolenURBike

Registriert seit: 21. Jan 2017
9 Beiträge
 
#1

Fehlermeldung "external SIGSEGV"

  Alt 21. Jan 2017, 16:28
Servus Leute,
ich versuche mich momentan an Snake in Delphi für ein Schulprojekt und habe momentan ein nervigen Fehler.
Unzwar kommt immer wenn ich meinen BitBtn1 klicke folgende Fehlermeldung:
"Projekt project1 hat Exception-Klasse >External:SIGSEGV< ausgelöst. In Datei `unit1.pas` in Zeile 58: Paintbox1.Canvas.Pen.Width=10;"

Ich habe auch schon probiert diesen Befehl auszuklammern doch dann bezieht sich der Fehler auf den Befehl in Zeile 59.

Code:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  Buttons;

type

  { TForm1 }

  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Image1: TImage;
    PaintBox1: TPaintBox;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

  //Schlange
  type
      TPunkt = class
      private
      public
         procedure paint(xWert, yWert:integer);
  end;

var
  Form1: TForm1;
  xWert: integer;
  yWert: integer;
  punkt: TPunkt;
  Paintbox1 : TPaintbox;
implementation

{$R *.lfm}


{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  //Logo
  Image1.Picture.LoadFromFile('Logo.jpg');

end;

procedure TPunkt.paint(xWert, yWert: integer);
begin
Paintbox1.Canvas.Pen.Width:= 10;
Paintbox1.Canvas.Pen.Color:=clLime;
Paintbox1.Canvas.MoveTo(xWert,yWert);
Paintbox1.Canvas.LineTo(xWert,yWert);
end;


procedure TForm1.BitBtn1Click(Sender: TObject);
var xWert, yWert: integer;
begin
punkt:=TPunkt.create;
xWert:=10;
yWert:=10;
punkt.paint(xWert, yWert);
end;

end.
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#2

AW: Fehlermeldung "external SIGSEGV"

  Alt 21. Jan 2017, 16:32
Du hast zwei Mal Paintbox1 deklariert.
Das obere ist eine automatische Deklaration, nachdem du die PaintBox auf dein Formular gepackt hast.

Die untere ist von dir. Entferne mal das untere und teste dann.

Die beiden globalen Variablen xWert und yWert kannst du auch entfernen.
Genau wie Punkt. Deklariere Punkt direkt im BitBtn.

Ich würde das alles generell anders machen und die Klasse TPunkt komplett weglassen.

Geändert von a.def (21. Jan 2017 um 16:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.944 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Fehlermeldung "external SIGSEGV"

  Alt 21. Jan 2017, 16:45
Zitat:
Image1.Picture.LoadFromFile('Logo.jpg');
Und dieser "relative" Pfad wird früher oder später auch knallen.

Geh mal auf Menü > Start > Parameter > Arbeitsverzeichnis (ich hoffe das ist in Lazarus an der selten Stelle, aber glaub schon),
schreib dort C:\ rein und drück beherzt auf F9.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (21. Jan 2017 um 16:48 Uhr)
  Mit Zitat antworten Zitat
StolenURBike

Registriert seit: 21. Jan 2017
9 Beiträge
 
#4

AW: Fehlermeldung "external SIGSEGV"

  Alt 21. Jan 2017, 16:53
Du hast zwei Mal Paintbox1 deklariert.
Das obere ist eine automatische Deklaration, nachdem du die PaintBox auf dein Formular gepackt hast.

Die untere ist von dir. Entferne mal das untere und teste dann.
Problem ist, dass jetzt folgende Fehlermeldung kommt: "Error: Identifier not found "Paintbox1""
  Mit Zitat antworten Zitat
StolenURBike

Registriert seit: 21. Jan 2017
9 Beiträge
 
#5

AW: Fehlermeldung "external SIGSEGV"

  Alt 21. Jan 2017, 17:00
Und dieser "relative" Pfad wird früher oder später auch knallen.

Geh mal auf Menü > Start > Parameter > Arbeitsverzeichnis (ich hoffe das ist in Lazarus an der selten Stelle, aber glaub schon),
schreib dort C:\ rein und drück beherzt auf F9.
Habe das jetzt mal reingeschrieben. Weiß nicht was du wirklich mit Knallen meinst, aber ich hoffe, dass es für dieses Schulprojekt ausreicht.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: Fehlermeldung "external SIGSEGV"

  Alt 21. Jan 2017, 17:12
Habe mal den Quelltext ein bisserl verändert:
Delphi-Quellcode:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  Buttons;

type

  { TForm1 }

  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Image1: TImage;
    PaintBox1: TPaintBox;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
    procedure MyPaint(xWert, yWert:integer);
  public
    { public declarations }
  end;

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  //Logo
  Image1.Picture.LoadFromFile('Logo.jpg');
end;

procedure TForm1.MyPaint(xWert, yWert: integer);
begin
  Paintbox1.Canvas.Pen.Width := 10;
  Paintbox1.Canvas.Pen.Color := clLime;
  Paintbox1.Canvas.MoveTo(xWert,yWert);
  Paintbox1.Canvas.LineTo(xWert,yWert);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  MyPaint(10, 10);
end;

end.
Schau mal bitte, ob es so funktioniert und wenn ja, erkläre uns bitte warum.
  Mit Zitat antworten Zitat
StolenURBike

Registriert seit: 21. Jan 2017
9 Beiträge
 
#7

AW: Fehlermeldung "external SIGSEGV"

  Alt 21. Jan 2017, 17:39
Ich habe deinen Quelltext 1:1 übernommen und nun funktioniert es auch, dass ich den besagten Punkt zeichen kann. DU HAST MIR DAMIT SEHR GEHOLFEN!
  Mit Zitat antworten Zitat
StolenURBike

Registriert seit: 21. Jan 2017
9 Beiträge
 
#8

AW: Fehlermeldung "external SIGSEGV"

  Alt 21. Jan 2017, 17:40
Komisch ist nur warum es bei mir die ganze Zeit gesponnen hat. Aber das kann ein kleiner Denkfehler gewesen sein.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#9

AW: Fehlermeldung "external SIGSEGV"

  Alt 21. Jan 2017, 18:05
Schau Dir bitte die Unterschiede an und versuche sie zu verstehen, sonst machst Du den Fehler in Zukunft vermutlich regelmäßig wieder.

Dashier
Zitat:
Schau mal bitte, ob es so funktioniert und wenn ja, erkläre uns bitte warum.
meinte ich durchaus ernst.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.944 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Fehlermeldung "external SIGSEGV"

  Alt 21. Jan 2017, 18:10
Du hattest Variablen doppelt.
Das ist grundsätzlich nicht schlimm, wenn man auch Alle Versionen richtig initialisiert und übergibt/überträgt.


Wenn es nicht knallt, dann wird FormCreate nicht ausgeführt oder Lazarus hat einen Bug. (Letzteres glaub ich fast nicht)
Ansonsten müsste bei dir die Datei C:\Logo.jpg existieren, was sie vermutlich nicht tut.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf