AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

335 Stringlist einträge nicht mehr?

Ein Thema von Nicodius · begonnen am 10. Apr 2005 · letzter Beitrag vom 10. Apr 2005
Antwort Antwort
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#1

335 Stringlist einträge nicht mehr?

  Alt 10. Apr 2005, 00:57
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
Nico Müller
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#2

Re: 335 Stringlist einträge nicht mehr?

  Alt 10. Apr 2005, 01:39
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:
FechterListe : Array [1..200] of TFechter; folgendes:
FechterListe : Array [1..Start_Fechter] of TFechter; Btw: Die Variablen gehören in den private/publich Bereich.

MfG Pr0g
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#3

Re: 335 Stringlist einträge nicht mehr?

  Alt 10. Apr 2005, 09:08
verdammt das habe ich gar nicht gesehen


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

--> aber warum kommt bei 335 keine feglermeldung?


mfg

Nico
Nico Müller
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: 335 Stringlist einträge nicht mehr?

  Alt 10. Apr 2005, 13:00
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#5

Re: 335 Stringlist einträge nicht mehr?

  Alt 10. Apr 2005, 15:23
danke!
Nico Müller
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:20 Uhr.
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