Einzelnen Beitrag anzeigen

Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#10

AW: SIGSEGV Fehler bei Stringzuweisung

  Alt 20. Apr 2012, 10:49
Ich habe den Fehler durch ein kleines Programm simulieren wollen:
Delphi-Quellcode:
   Label1.Caption := '-1';
Label1.Caption := '1';
Damit bekomme ich den Fehler allerdings nicht.

Mein Projektcode führt zu dem Fehler, aber es ist noch etwas bizarrer geworden.
Nur das LblPunkte1 führt zu diesem Fehler, das LblPunkte2 nicht.
Delphi-Quellcode:
//------------------------------------------------
//Wechsel-----------------------------------------
//------------------------------------------------
procedure TFormMain.Wechsel();
var
   IntGeschossen : Integer;
   IntAufnahme: Integer;
begin
   //Jetzige Aufnahme verarbeiten und Anzeigen aktualisieren
   IntGeschossen := IntEsLiegen - SpinEditBaelle.Value;
   //Neue Höchstserie?
   IntAufnahme := StrToInt(LblAufnahme.Caption);
   if bSpieler1IstDran then //Welcher Spieler ist dran? -> Punkte addieren etc.
   begin
      Spieler1.Punkte := Spieler1.Punkte + IntGeschossen;
      LblPunkte1.Caption := IntToStr(Spieler1.Punkte); //Anzeige aktualisieren-> Fehler, wenn
      //die Anzeige vorher '-1' angezeigt hat und soll nun eine positive Zahl anzeigen
      SGridTab1.Cells[0,IntAufnahme] := LblAufnahme.Caption;
      SGridTab1.Cells[1,IntAufnahme] := IntToStr(IntGeschossen);
      SGridTab1.Cells[3,IntAufnahme] := IntToStr(Spieler1.Punkte);
      //Passt die nächste Aufnahme noch auf das Sheet oder muss eine neue Zeile angefügt werden?
      if SGridTab1.RowCount <= IntAufnahme + 1 then
      begin
         SGridTab1.RowCount := SGridTab1.RowCount + 1;
         SGridTab2.RowCount := SGridTab2.RowCount + 1;
         //Die Tabellen bei Überlauf scrollen
         SGridTab1.TopRow := SGridTab1.TopRow + 1;
         SGridTab2.TopRow := SGridTab2.TopRow + 1;
      end;
      //Neue Höchstserie?
      if IntGeschossen > Spieler1.Serie then Spieler1.Serie := IntGeschossen;
   end else
   begin
      Spieler2.Punkte := Spieler2.Punkte + IntGeschossen;
      LblPunkte2.Caption := IntToStr(Spieler2.Punkte); //Anzeige aktualisieren-> kein Fehler
      SGridTab2.Cells[0,IntAufnahme] := LblAufnahme.Caption;
      SGridTab2.Cells[1,IntAufnahme] := IntToStr(IntGeschossen);
      SGridTab2.Cells[3,IntAufnahme] := IntToStr(Spieler2.Punkte);
      LblAufnahme.Caption := IntToStr(IntAufnahme+1);
      //Neue Höchstserie?
      if IntGeschossen > Spieler2.Serie then Spieler2.Serie := IntGeschossen;
   end;

   //Nächste Aufnahme:
   bSpieler1IstDran := not bSpieler1IstDran; //Nächster Spieler ist dran
   IntEsLiegen := SpinEditBaelle.Value;
end;
Das ist die Prozedur, in die der Debugger hineinspringt. Aber ich weiß nicht, was das mit einer Scrollbar zu tun haben soll.
Delphi-Quellcode:
function TControlScrollBar.HandleAllocated: boolean;
begin
  Result := (FControl <> nil) and FControl.HandleAllocated;
end;
  Mit Zitat antworten Zitat