Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 335 Stringlist einträge nicht mehr? (https://www.delphipraxis.net/43877-335-stringlist-eintraege-nicht-mehr.html)

Nicodius 10. Apr 2005 00:57


335 Stringlist einträge nicht mehr?
 
Delphi-Quellcode:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, Fechter, StdCtrls;
const Start_geld = 1000;
      Start_Fechter = 335; //max 335
      Start_Trainer = 1;
      Start_Kassier_Proz = 10;
type
  TForm1 = class(TForm)
    Showing: TStatusBar;
    Test: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  FechterListe : Array [1..200] of TFechter;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i : Integer;
    TestL : TStringlist;
begin
  // Initialisierung
  For i := 1 to Start_Fechter do
    FechterListe[i] := TFechter.Create;

  TestL := TStringlist.Create;
for i := 1 to Start_Fechter do
begin
  TestL := FechterListe[i].getInfo;
  Test.Lines.Add('Fechter ' + IntToStr(i));
  Test.Lines.Add('Name: ' + TestL[0] + ' ' + TestL[1]);
  Test.Lines.Add('Geschlecht: ' + TestL[2]);
  Test.Lines.Add('Alter: ' + TestL[3]);
  Test.Lines.Add('Talent: ' + TestL[4]);
  Test.Lines.Add('Kondition: ' + TestL[5]);
  Test.Lines.Add('Wille: ' + TestL[6]);
  Test.Lines.Add('Beinarbeit: ' + TestL[7]);
  Test.Lines.Add('Erfahrung: ' + TestL[8]);
  Test.Lines.Add('----------------');
end;

  TestL.Destroy;

  Showing.Panels[0].text := 'Geld: ' + IntToStr(Start_Geld);
  Showing.Panels[1].text := 'Fechter: ' + IntToStr(Start_Fechter);
  Showing.Panels[2].text := 'Trainer: ' + IntToStr(Start_Trainer);

end;

end.

Wenn ich bei start_Fechter jetzt 336 hinschreibe kommt am ende des Porgrammes(beim schließen) dieser fehler:

Zitat:

---------------------------
Error
---------------------------
Runtime error 216 at 009A489C
---------------------------
OK
---------------------------

wenn ich noch mehr hinschreibe .. also 400 zb dann kommt am anfang beim starten des Programmes


Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Fechttrainer.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 009AA8F7. Schreiben von Adresse 011584BA'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
und

Zitat:

---------------------------
Fechttrainer
---------------------------
Zugriffsverletzung bei Adresse 009AA8F7. Schreiben von Adresse 011584BA.
---------------------------
OK
---------------------------

und am ende des programmes(im memo wird auch nichts angezeigt)

Zitat:

---------------------------
Error
---------------------------
Runtime error 216 at 009A489C
---------------------------
OK
---------------------------


liegt das daran dass das memo nicht mehr zeilen packen kann oder ist das was anderes



Delphi 7 Enterprise





danke

Nico


ps.: die fechterunit macht nichts besonderes außer werte zufällig vergeben und mit eienr get methode abrufen lassen

ps2.: sehr schöne codeformatierung oder :mrgreen:

Pr0g 10. Apr 2005 01:39

Re: 335 Stringlist einträge nicht mehr?
 
Das Problem wird dieses Stück sein:
Delphi-Quellcode:
For i := 1 to Start_Fechter do
    FechterListe[i] := TFechter.Create;
"FechterListe" ist ein Array von 1 bis 200, da "Start_Fechter" aber mit 335 angegeben ist, versuchst du auf das Array von 1 bis 355 zuzugreifen. Nach 200 ist aber Ende. Mach also am besten aus:
Delphi-Quellcode:
FechterListe : Array [1..200] of TFechter;
folgendes:
Delphi-Quellcode:
FechterListe : Array [1..Start_Fechter] of TFechter;
Btw: Die Variablen gehören in den private/publich Bereich.

MfG Pr0g

Nicodius 10. Apr 2005 09:08

Re: 335 Stringlist einträge nicht mehr?
 
verdammt das habe ich gar nicht gesehen :mrgreen:


... ich hab einfach nämlich das ganze durchgetestet ... thx

--> aber warum kommt bei 335 keine feglermeldung? :gruebel:


mfg

Nico

Christian Seehase 10. Apr 2005 13:00

Re: 335 Stringlist einträge nicht mehr?
 
Moin Nico,

weil bei dem Programm erst ab 336 Speicherbereiche überschrieben werden die das Programm intern braucht.
Je nach Programmaufbau hätte dies auch schon bei einem kleineren, erst bei einem grösseren Wert passieren können.

Nicodius 10. Apr 2005 15:23

Re: 335 Stringlist einträge nicht mehr?
 
danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz