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
Seite 1 von 2  1 2      
Benutzerbild von Dunkelbunt27
Dunkelbunt27

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

Zufallsbuchstabe-Array Fehler

  Alt 18. Feb 2011, 16: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, 16: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 16: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, 16: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, 16: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, 16: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, 16: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, 16: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
Benutzerbild von Dunkelbunt27
Dunkelbunt27

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

AW: Zufallsbuchstabe-Array Fehler

  Alt 18. Feb 2011, 16:49
Das ist komisch, sowas hatte ich mir schon gedacht gehabt und ausprobiert und jetzt fangen alle Arrays bei 0 an, ich lasse die Schleife bis ...-1 laufen und bekomme wieterhin eine Zugriffsverletzung...
Ich hoffe es weiß nochjemand weitere Ratschläge...

EDIT: Falls es Hilft, es kommt direkt am Start, bevor man etwas sieht eine Zugriffsverletzung und am Ende...

Geändert von Dunkelbunt27 (18. Feb 2011 um 17:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

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

AW: Zufallsbuchstabe-Array Fehler

  Alt 18. Feb 2011, 17:02
Ich meine, du hast Zeilen und Spalten vertauscht. Probier doch mal aus, was passiert, wenn du die Anzahl der Spalten gleich der Anzahl der Zeilen setzt, dann sollte es eigentlich funktionieren.

Schau dir das mal genauer an:

SetLength(buchstabe,Anzahlzeilen,Anzahlspalten);
In erster Dimension hast du "AnzahlZeilen" an Elementen, in zweiter Dimension "AnzahlSpalten". In deiner Schleife machst du folgendes:
Delphi-Quellcode:
for i := 0 to AnzahlSpalten -1 do
    for n := 0 to AnzahlZeilen -1 do
      begin
          //...
          buchstabe[i,n].Zeichen := Char(RandomZeichen); // i ist erste Dimension, n zweite !!!!
      end;
i iteriert über die erste Dimension. Du gehst bis "AnzahlSpalten" -1, hast aber bloß "AnzahlZeilen" Elemente. Das gleiche gilt für n. Wenn "AnzahlZeilen" <> "AnzahlSpalten" dann kracht es irgendwann unweigerlich...
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
 
#10

AW: Zufallsbuchstabe-Array Fehler

  Alt 18. Feb 2011, 17:05
JAWOLL! Das funktioniert supi!
Es ist nur etwas komisch, dass nicht jedes Zeichen "radom" ist sondern viele zeichen untereinander(eigentlich alle) gleich sind.
Das ist jetzt aber nicht DAS Problem.. vielleicht ist es unvermeindlich, ich miene außer Randomize gibt es ja nichts mir bekanntes...

DANKE erstmal!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:16 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