Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Lazarus (IDE) (https://www.delphipraxis.net/81-lazarus-ide/)
-   -   Fehler nach der Form.Create-Procedure (https://www.delphipraxis.net/156859-fehler-nach-der-form-create-procedure.html)

Noobmaster 17. Dez 2010 12:33

Fehler nach der Form.Create-Procedure
 
Hallo!
Bin in meinem neuen Projekt auf folgenden Fehler gestoßen: Immer wenn ich neu kompilier, bringt er mir direkt einen SIGSEGV Fehler. Um den Fehler zu finden, habe ich in in Einzelschritten die CreateProcedure durchsucht, dort liegt der Fehler aber nicht.
Ich hoffe ihr könnt mir helfen!

P.S.: Ich habe erst einen groben Überblick gegeben, um später notwendige Code-Ausschnitte nachzureichen

Danke!

franktron 17. Dez 2010 13:38

AW: Fehler nach der Form.Create-Procedure
 
Das hier http://www.delphipraxis.net/156611-e...-new-post.html

Noobmaster 17. Dez 2010 16:14

AW: Fehler nach der Form.Create-Procedure
 
Ich wüsste jetzt nicht, was das mit meinem Problem zu tun hat...Die Vorgängerversionen meines Programmes laufen einwandfrei. Ich poste jetzt mal den Code, den ich so verändert habe, dass danach nichts mehr ging
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
i        : Integer; //Schleifenindex
Config   : TIniFile;
AnzahlSpeicherungen : Integer; //Wie oft wurde schon abgespeichert?
begin
     SetLength(Gericht,NumberofRecipes);
     for i := 1 to NumberofRecipes do
         Gericht[i] := TGericht.Create(i);

  //Anzahl wie oft ein Gericht verwendet wurde aus der Configdatei ablesen:
  Config := TIniFile.Create('Config.ini');
  try
  begin
    CBBeans.Hint        := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBBeans',0));
    CBBeef.Hint         := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBBeef',0));
    CBBlumenkohl.Hint   := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBBlumenkohl',0));
    CBBratwurst.Hint    := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBBratwurst',0));
    CBCarrots.Hint      := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBCarrots',0));
    CBCheese.Hint       := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBCheese',0));
    CBChicken.Hint      := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBChicken',0));
    CBCucumbers.Hint    := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBCucumbers',0));
    CBEggs.Hint         := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBEggs',0));
    CBErbsen.Hint       := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBErbsen',0));
    CBFish.Hint         := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBFish',0));
    CBFishsticks.Hint   := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBFishsticks',0));
    CBGehacktes.Hint    := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBGehacktes',0));
    CBKloesse.Hint      := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBKloesse',0));
    CBLettuce.Hint      := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBLettuce',0));
    CBNoodles.Hint      := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBNoodles',0));
    CBOnions.Hint       := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBOnions',0));
    CBPommes.Hint       := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBPommes',0));
    CBPotatoes.Hint     := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBPotatoes',0));
    CBPork.Hint         := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBPork',0));
    CBRice.Hint         := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBRice',0));
    CBRippchen.Hint     := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBRippchen',0));
    CBRotkraut.Hint     := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBRotkraut',0));
    CBSauergurken.Hint  := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBSauergurken',0));
    CBSauerkraut.Hint   := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBSauerkraut',0));
    CBSchinken.Hint     := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBSchinken',0));
    CBSpinach.Hint      := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBSpinach',0));
    CBTomatoes.Hint     := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBTomatoes',0));
    CBWeisskohl.Hint    := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBWeisskohl',0));
    CBWienerSausage.Hint := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBWienerSausage',0));
    CBPaprika.Hint      := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBPaprika',0));
    CBLauch.Hint        := IntToStr(Config.ReadInteger('Anzahl Zutatenverwendung','CBLauch',0));
  end;

  //Wann wurde eine Zutat das letzte Mal benutzt?
  begin
    CBBeans.Hint        := CBBeans.Hint + ' Mal verwendet, letzte Verwendung: ' + DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBBeans',Date()));
    CBBeef.Hint         := CBBeef.Hint + ' Mal verwendet, letzte Verwendung: ' + DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBBeef',Date()));
    CBBlumenkohl.Hint   := CBBlumenkohl.Hint + ' Mal verwendet, letzte Verwendung: ' + DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBBlumenkohl',Date()));
    CBBratwurst.Hint    := CBBratwurst.Hint + ' Mal verwendet, letzte Verwendung: ' + DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBBratwurst',Date()));
    CBCarrots.Hint      := CBCarrots.Hint + ' Mal verwendet, letzte Verwendung: ' + DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBCarrots',Date()));
    CBCheese.Hint       := CBCheese.Hint + ' Mal verwendet, letzte Verwendung: ' + DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBCheese',Date()));
    CBChicken.Hint      := CBChicken.Hint + ' Mal verwendet, letzte Verwendung: ' + DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBChicken',Date()));
    CBCucumbers.Hint    := CBCucumbers.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBCucumbers',Date()));
    CBEggs.Hint         := CBEggs.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBEggs',Date()));
    CBErbsen.Hint       := CBErbsen.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBErbsen',Date()));
    CBFish.Hint         := CBFish.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBFish',Date()));
    CBFishsticks.Hint   := CBFishsticks.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBFishsticks',Date()));
    CBGehacktes.Hint    := CBGehacktes.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBGehacktes',Date()));
    CBKloesse.Hint      := CBKloesse.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBKloesse',Date()));
    CBLettuce.Hint      := CBLettuce.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBLettuce',Date()));
    CBNoodles.Hint      := CBNoodles.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBNoodles',Date()));
    CBOnions.Hint       := CBOnions.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBOnions',Date()));
    CBPommes.Hint       := CBPommes.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBPommes',Date()));
    CBPotatoes.Hint     := CBPotatoes.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBPotatoes',Date()));
    CBPork.Hint         := CBPork.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBPork',Date()));
    CBRice.Hint         := CBRice.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBRice',Date()));
    CBRippchen.Hint     := CBRippchen.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBRippchen',Date()));
    CBRotkraut.Hint     := CBRotkraut.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBRotkraut',Date()));
    CBSauergurken.Hint  := CBSauergurken.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBSauergurken',Date()));
    CBSauerkraut.Hint   := CBSauerkraut.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBSauerkraut',Date()));
    CBSchinken.Hint     := CBSchinken.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBSchinken',Date()));
    CBSpinach.Hint      := CBSpinach.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBSpinach',Date()));
    CBTomatoes.Hint     := CBTomatoes.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBTomatoes',Date()));
    CBWeisskohl.Hint    := CBWeisskohl.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBWeisskohl',Date()));
    CBWienerSausage.Hint := CBWienerSausage.Hint + ' Mal verwendet, letzte Verwendung: ' + DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBWienerSausage',Date()));
    CBPaprika.Hint      := CBPaprika.Hint + ' Mal verwendet, letzte Verwendung: ' +  DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBWeisskohl',Date()));
    CBLauch.Hint        := CBLauch.Hint + ' Mal verwendet, letzte Verwendung: ' + DateToStr(Config.ReadDate('Datum der letzten Verwendung','CBWienerSausage',Date()));
    end;

  //Daten der letzten Abspeicherung auslesen und anzeigen lassen
  AnzahlSpeicherungen := Config.ReadInteger('AnzahlSpeicherungen','Anzahl',1); //Anzahl Schleifendurchläufe auslesen
  //for i := 1 to AnzahlSpeicherungen do
      //ComboBox1.Items.Add(DateToStr(Config.ReadDate('AnzahlSpeicherungen',IntToStr(i),Date())));
  //Label2.Caption := DateToStr(Config.ReadDate('AnzahlSpeicherungen',IntToStr(AnzahlSpeicherungen),Date()));

  finally
  Config.Free;
  end;

  //Checkboxes in ein Array ablegen -> erleichtert später abspeichern in Configdatei
  begin
     SetLength(Zutat,AnzahlZutaten);

     Zutat[1] := CBBeans;      ;
     Zutat[2] := CBBeef;       ;
     Zutat[3] := CBBlumenkohl  ;
     Zutat[4] := CBBratwurst   ;
     Zutat[5] := CBCarrots     ;
     Zutat[6] := CBCheese      ;
     Zutat[7] := CBChicken     ;
     Zutat[8] := CBCucumbers   ;
     Zutat[9] := CBEggs        ;
     Zutat[10] := CBErbsen     ;
     Zutat[11] := CBFish       ;
     Zutat[12] := CBFishsticks ;
     Zutat[13] := CBGehacktes  ;
     Zutat[14] := CBKloesse    ;
     Zutat[15] := CBLettuce    ;
     Zutat[16] := CBNoodles    ;
     Zutat[17] := CBOnions     ;
     Zutat[18] := CBPommes     ;
     Zutat[19] := CBPork       ;
     Zutat[20] := CBPotatoes   ;
     Zutat[21] := CBRice       ;
     Zutat[22] := CBRippchen   ;
     Zutat[23] := CBRotkraut   ;
     Zutat[24] := CBSauergurken;
     Zutat[25] := CBSauerkraut;
     Zutat[26] := CBSchinken;
     Zutat[27] := CBSpinach;
     Zutat[28] := CBTomatoes;
     Zutat[29] := CBWeisskohl;
     Zutat[30] := CBWienerSausage;
     Zutat[31] := CBPaprika;
     Zutat[32] := CBLauch;
  end;
end;
Sry, für den schlechten Stil, aber ich bin halt noch relativer Anfänger ;-)
Das Programm schlägt einem vor, was man kochen soll. Anhand von Checkboxes wählt man die vorhandenen Zutaten aus.

DeddyH 17. Dez 2010 16:20

AW: Fehler nach der Form.Create-Procedure
 
Dein Schleifenindex ist falsch.
Zitat:

Delphi-Quellcode:
SetLength(Gericht,NumberofRecipes);
     for i := 1 to NumberofRecipes do
         Gericht[i] := TGericht.Create(i);

Dynamische Arrays beginnen mit dem Index 0. Auf jeden Fall anzuraten ist in so einem Fall die Verwendung von Low() und High(), dann muss man sich um Array-Grenzen keine Sorgen machen.
Delphi-Quellcode:
SetLength(Gericht,NumberofRecipes);
     for i := Low(Gericht) to High(Gericht) do
         Gericht[i] := TGericht.Create(i);
Ob das nun die Fehlerursache war, kann ich Dir nicht sagen, ein Fehler war es auf jeden Fall.

Deep-Sea 17. Dez 2010 16:26

AW: Fehler nach der Form.Create-Procedure
 
Wenn Gericht wirklich Objekte beinhaltet, ist ggf. eine TObjectList die bessere Wahl, da diese - sofern man will - das freigeben der Objekte übernimmt und man es so nicht vergessen kann. :wink:

PS: Der von DeddyH genannte Fehler tritt auch bei den Zuweisungen von Zutat auf.

Noobmaster 17. Dez 2010 16:43

AW: Fehler nach der Form.Create-Procedure
 
Danke, das mit dem Low(Gericht) und High(Gericht) hat den Fehler beseitigt, muss jetzt mal gucken, ob er alles richtig macht...

Deep-Sea 17. Dez 2010 16:45

AW: Fehler nach der Form.Create-Procedure
 
Der Fehler ist immer noch nicht behoben:
Delphi-Quellcode:
for i := 0 to NumberofRecipes do
Das ist FALSCH! Sie dir das Post von DeddyH noch einmal genau an :wink:

DeddyH 17. Dez 2010 16:45

AW: Fehler nach der Form.Create-Procedure
 
Deine Korrektur ist immer noch falsch, nun hast Du ein Element zuviel. Hast Du etwas gegen Low() und High(), oder ist Dir nur egal, was wir schreiben?

[edit] @Tiefseetaucher: :cheers: :lol: [/edit]

Sir Rufo 17. Dez 2010 16:56

AW: Fehler nach der Form.Create-Procedure
 
So wie er schreibt benutzt er doch Low und High? Kann man noch lower oder higher? :gruebel:

DeddyH 17. Dez 2010 16:57

AW: Fehler nach der Form.Create-Procedure
 
Ja jetzt, nachdem der Post geändert wurde, vorher ging es von 0 bis Elementanzahl.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:14 Uhr.
Seite 1 von 2  1 2      

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