AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Ungültige Zeigeroperation beim randomizen von Zahlen.
Thema durchsuchen
Ansicht
Themen-Optionen

Ungültige Zeigeroperation beim randomizen von Zahlen.

Ein Thema von Gurkenmann · begonnen am 14. Sep 2017 · letzter Beitrag vom 14. Sep 2017
Antwort Antwort
Gurkenmann
(Gast)

n/a Beiträge
 
#1

Ungültige Zeigeroperation beim randomizen von Zahlen.

  Alt 14. Sep 2017, 13:35
Hey, ich bin hier relativ neu, also ich hab noch nicht so viel Erfahrung ^^
Ich hab für die Schule mit einem Kumpel ein Programm erstellt, welches Zahlen mit verschiedenen Algorithmen sortiert.+

Nun habe ich es so gemacht, dass ich ein Edit Feld habe, wo ich die Anzahl an Zahlen eintragen kann, die sortiert werden sollen.
Diese Zahl bestimmt dann die Länge meines Arrays.
Zudem bestimmt die Zahl auch die Länge meines Stringgrids, wo ich die Zahlen reinmachen will.
Da ich aber für jeden Algorithmus mein eigenes Array haben wollte, habe ich dementsprechend viele Arrays.
Ich hoffe man konnte es einiger massen gut nachvollziehen

Hier also mein Code:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
Var
 t,n,j: Integer;
begin
  t:= strtoint(Edit1.Text);
  t:=t-1;

  setlength(ZahlSort, t);

  StringGrid1.RowCount:= strtoInt(Edit1.Text);
  StringGrid2.RowCount:= strtoInt(Edit1.Text);
  StringGrid3.RowCount:= strtoInt(Edit1.Text);
  StringGrid4.RowCount:= strtoInt(Edit1.Text);
  StringGrid5.RowCount:= strtoInt(Edit1.Text);

  SetLength(Zahl1, Length(ZahlSort));
  SetLength(Zahl2, Length(ZahlSort));
  SetLength(Zahl3, Length(ZahlSort));
  SetLength(Zahl4, Length(ZahlSort));
  SetLength(Zahl5, Length(ZahlSort));

   StringGrid6.Cells[0,0] := 'Bubblesort';
   StringGrid6.Cells[0,1] := 'Insetionsort';
   StringGrid6.Cells[0,2] := 'Shellsort';
   StringGrid6.Cells[0,3] := 'Quicksort';
   StringGrid6.Cells[0,4] := 'Selectionsort';


  randomize;
  For n:=0 to strtoint(Edit1.Text) do

  begin
    ZahlSort[n] := random(strtoint(Edit1.Text));
  end;
  Zahl1:=ZahlSort;
  Zahl2:=ZahlSort;
  Zahl3:=ZahlSort;
  Zahl4:=ZahlSort;
  Zahl5:=ZahlSort;

  For j:=0 to strtoint(Edit1.Text) do
    begin
      StringGrid1.Cells[0,j] := inttostr(Zahl1[j]);
      StringGrid2.Cells[0,j] := inttostr(Zahl2[j]);
      StringGrid3.Cells[0,j] := inttostr(Zahl3[j]);
      StringGrid4.Cells[0,j] := inttostr(Zahl4[j]);
      StringGrid5.Cells[0,j] := inttostr(Zahl5[j]);



    end;

end;
Und nun bekomme ich manchmal die Fehlermeldung "ungültige Zeigeroperation".
Waran liegt das?

Ich hoffe ihr könnt mir helfen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Ungültige Zeigeroperation beim randomizen von Zahlen.

  Alt 14. Sep 2017, 13:54
Du nimmst t aus dem Edit entgegen, ziehst 1 ab und hast damit die Länge Deiner Arrays. Dann darfst Du sie aber nicht von 0 bis <Zahl im Edit> durchlaufen, da sie von 0 bis <Zahl im Edit> - 2 gehen. Schalt doch mal die Bereichsprüfung ein. Und noch ein Tipp: wenn man Arrays von Low() bis High() durchläuft, muss man sich um den Index des ersten Elements und solche Dinge keine Gedanken machen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Gurkenmann
(Gast)

n/a Beiträge
 
#3

AW: Ungültige Zeigeroperation beim randomizen von Zahlen.

  Alt 14. Sep 2017, 14:07
Wo finde ich diese Bereichsprüfung?
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Ungültige Zeigeroperation beim randomizen von Zahlen.

  Alt 14. Sep 2017, 14:11
Wo finde ich diese Bereichsprüfung?
Projektoptionen --> Delphi-Compiler --> Compilieren --> Kategorie Laufzeitfehler --> Bereichsüberprüfung --> auf "True" stellen.

Geändert von Aviator (14. Sep 2017 um 14:17 Uhr) Grund: Wortlaut berichtigt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Ungültige Zeigeroperation beim randomizen von Zahlen.

  Alt 14. Sep 2017, 14:15
In aktuellen Delphi-Versionen unter Projekt - Optionen - Delphi-Compiler - Compilieren, dann auf der rechten Seite unter Laufzeitfehler.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Gurkenmann
(Gast)

n/a Beiträge
 
#6

AW: Ungültige Zeigeroperation beim randomizen von Zahlen.

  Alt 14. Sep 2017, 14:29
Oh, ok! danke
Jo... ich glaube es hat geklappt ^^ also es kommt keine Fehler Meldung mehr ^^
thx
  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 16:15 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