AGB  ·  Datenschutz  ·  Impressum  







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

Zufallsbuchstabe-Array Fehler

Ein Thema von Dunkelbunt27 · begonnen am 18. Feb 2011 · letzter Beitrag vom 18. Feb 2011
Antwort Antwort
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#1

Zufallsbuchstabe-Array Fehler

  Alt 18. Feb 2011, 15:24
Hallo Delphi-PRAXIS,

Ich generiere mit folgendem Code Zufallsbuchstaben, die eigentlich mein Array(zweidimensional) füllen sollen, die ich danach ausgeben kann.

Delphi-Quellcode:
spalten : array [1..300] of integer;
zeilen : array [1..300] of integer;
...
for i := 0 to AnzahlSpalten do
    for n := 0 to AnzahlZeilen do
        begin
          Spaltenzaehler := i;
          Zeilenzaehler := n;
          randomize;
          RandomZeichen := random(26) + 65;
//*******************************************************************************************\\
          buchstabe[i,n].Zeichen := char(RandomZeichen); // Hier ist ein Fehler!
//*******************************************************************************************\\
          Schreibflaeche.Canvas.TextOut(spalten[Spaltenzaehler],zeilen[Zeilenzaehler],buchstabe[i,n].zeichen);
        end;
Ich bekomme jedesmal eine Zugriffsverletzung... kann mir jemand helfen den Fehler zu finden?

FG Dunkelbunt
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Zufallsbuchstabe-Array Fehler

  Alt 18. Feb 2011, 15:26
Deine Arrays starten bei Index 1, deine Schleifen aber bei 0!

Edit: Die Deklaration des Buchstaben-Arrays fehlt allerdings in deinem Code-Ausschnitt. Geht dieses Array auch bei 1 an? Und für was sollen denn die beiden Arrays "spalten" und "zeilen" eigentlich gut sein?
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/

Geändert von patti (18. Feb 2011 um 15:29 Uhr)
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#3

AW: Zufallsbuchstabe-Array Fehler

  Alt 18. Feb 2011, 15:28
Du fängst bei der Schleife bei 0 an zu zählen, dein Array beginnt aber erst bei 1

[edit]
zu langsam
[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#4

AW: Zufallsbuchstabe-Array Fehler

  Alt 18. Feb 2011, 15:33
Delphi-Quellcode:
type
TBuchstabe = record
              ...
             end;
var
  buchstabe : array of array of TBuchstabe;
Das mit der 1 statt Null bewirkt jetzt, dass die buchstaben eigentlich perfekt passen, trotzdem kommt bei der Zeile:
Code:
buchstabe[i,n].Zeichen := char(RandomZeichen);
eine Zugriffsverletzung im Modul ....
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Zufallsbuchstabe-Array Fehler

  Alt 18. Feb 2011, 15:35
buchstabe : array of array of TBuchstabe; Setzt du denn auch irgendwo die Größe des Arrays per SetLength?
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#6

AW: Zufallsbuchstabe-Array Fehler

  Alt 18. Feb 2011, 15:39
Ja, das funktioniert alles.
Code:
SetLength(buchstabe,Anzahlzeilen,Anzahlspalten);
Das Problem liegt laut Compiler bei der besagten Stelle.
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: Zufallsbuchstabe-Array Fehler

  Alt 18. Feb 2011, 15:43
Achtung: Wenn du die Größe eines dynamischen Arrays per SetLength auf einen Wert x setzt, dann ist der höchste Index high(array) = x-1 !
Das bedeutet, dass die Zugriffsverletzung wahrscheinlich "am Ende der Schleife" auftritt, weil du zu weit iterierst. Probier folgendes:

Delphi-Quellcode:
for i := 0 to AnzahlSpalten -1 do
    for n := 0 to AnzahlZeilen -1 do
Also bei 0 anfangen und bis Anzahl-1 durchgehen. Auch darauf achten, dass deine anderen Arrays groß genug sind. Vor allem sollten sie dann auch bei 0 anfangen
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  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 19:25 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