![]() |
komische Fehlermeldung, was bedeutet das?
Kann mir vielleicht jemand weiterhelfen, was das hier bedeutet?
Zitat:
|
Re: komische Fehlermeldung, was bedeutet das?
Du hast eine Schleifenvariable i definiert und greifst nach Ablauf der Schleife darauf zu.
|
Re: komische Fehlermeldung, was bedeutet das?
Du scheinst ausserhalb der Schleife die Laufvariable zu verwenden. Wie sieht der Code aus? Ist i innerhalb der Grenzen?
|
Re: komische Fehlermeldung, was bedeutet das?
Delphi-Quellcode:
das ist der source code...
procedure TForm1.Button1Click(Sender: TObject);
Var i,h:integer; begin Zufalls_Zahlen(Anzahl_Zufallszahlen); WortWandel; For i:=1 to Anzahl_Zufallszahlen do begin memo1.Lines.Add(IntToStr(Zufallszahlen[i])); end; For h:=1 to Anzahl_Zufallszahlen do begin memo1.lines.add(WList1.word[h]); end; end; |
Re: komische Fehlermeldung, was bedeutet das?
Also 1. traue ich mich fast wetten, dass es for i := 0 to xxx - 1 heißen müsste, zweitens: Ist das der komplette Code? Irgendwo musst du doch i außerhalb der Schleife verwenden :gruebel:
|
Re: komische Fehlermeldung, was bedeutet das?
Ausserdem ist der Wertebereich des Arrays nicht ersichtlich
|
Re: komische Fehlermeldung, was bedeutet das?
und könntest du diese seltsamen funktionen, die ja offensichtlich aus irgendeiner drittunit stammen, mal erklären? was macht denn dieses wortwandel? v.a. weil es keine parameter hat.
aber helfen kann man dir nur, wenn du den kompletten code postest, oder zumindest die teile wo die arrays definiert werden, und falls sie dynamisch sind auch den teil wo ihnen eine dimension gegeben wird (der setlength-teil). |
Re: komische Fehlermeldung, was bedeutet das?
hab einfach keine lust auf: :glaskugel:
|
Re: komische Fehlermeldung, was bedeutet das?
Delphi-Quellcode:
so, das ist der komplette code...
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, Unit3; type TForm1 = class(TForm) MainMenu1: TMainMenu; Hauptmenue1: TMenuItem; Aufgaben1: TMenuItem; Highscores1: TMenuItem; Accountladen1: TMenuItem; N1: TMenuItem; Accountspeichern1: TMenuItem; N2: TMenuItem; ENDE1: TMenuItem; Wrterlisten1: TMenuItem; Zahllisten1: TMenuItem; sonstiges1: TMenuItem; N3: TMenuItem; sonstiges2: TMenuItem; Reihenfolge1: TMenuItem; Drucheinander1: TMenuItem; MarathonTest1: TMenuItem; Spielkarten1: TMenuItem; N4: TMenuItem; Einfhrung1: TMenuItem; Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; Button1: TButton; Memo1: TMemo; procedure ENDE1Click(Sender: TObject); procedure Reihenfolge1Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure Reihenfolge; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Zufalls_Zahlen(Anzahl:integer); procedure Button1Click(Sender: TObject); procedure WortWandel; private wordlist1: TextFile; Anzahl_Zufallszahlen: integer; wie_viele_zeilen: integer; public { Public declarations } end; var Form1: TForm1; Zufallszahlen:Array[1..250] of integer; type wordlist = class private NumberOfWords: integer; word: array[1..100] of string; end; var WList1: wordlist; implementation {$R *.dfm} procedure TForm1.ENDE1Click(Sender: TObject); begin close; end; procedure TForm1.Reihenfolge1Click(Sender: TObject); begin Unit3.OKBottomDlg1.ShowModal; Anzahl_Zufallszahlen:=StrToInt(Unit3.OKBottomDlg1.Edit1.text); end; procedure TForm1.Reihenfolge; begin //weitermachen end; procedure TForm1.Zufalls_Zahlen(Anzahl:integer); Var i: integer; begin randomize; for i:=1 to Anzahl_Zufallszahlen do begin Zufallszahlen[i]:=random(wie_viele_zeilen+1); end; end; procedure TForm1.FormShow(Sender: TObject); begin WList1:= wordlist.Create; wie_viele_zeilen:=0; AssignFile(wordlist1,'wordlist1.txt'); reset(wordlist1); while not EoF(wordlist1) do begin readln(wordlist1); inc(wie_viele_zeilen); end; CloseFile(wordlist1); end; procedure TForm1.WortWandel; var zeile: string; i,h,a: integer; begin WList1.NumberOfWords:=0; // Textdatei wird lesbar gemacht AssignFile(wordlist1,'wordlist1.txt'); reset(wordlist1); // Einlesen bestimmter Zeilen der Textdatei a:=1; for h:=1 to Anzahl_Zufallszahlen do begin for i:=1 to (Zufallszahlen[a]-1) do begin readln(wordlist1,zeile); WList1.word[i]:=zeile; inc(a); end; end; WList1.NumberOfWords:=a; CloseFile(wordlist1); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin WList1.Free; end; procedure TForm1.Button1Click(Sender: TObject); Var i,h:integer; begin Zufalls_Zahlen(Anzahl_Zufallszahlen); WortWandel; For i:=1 to Anzahl_Zufallszahlen do begin memo1.Lines.Add(IntToStr(Zufallszahlen[i])); //--->>> hier is der FEHLER end; For h:=1 to Anzahl_Zufallszahlen do begin memo1.lines.add(WList1.word[h]); end; end; end. was das macht: ich bekomm ne liste von zufallszahlen, voneiner bestimmten angegebenen Anzahl die sich zwischen 1 und der anzahl der zeilen eines textdokuments befinden... anhand dieser zahlen wird eine zufällige zeile des textdokuments angewählt, das wort wird in meine eigene class gespiechert. wortwandel sucht nach den zufallszahlen die wörter aus der textdatei... hoffe ihr könnt mir helfen, is ziemlich viel code... |
Re: komische Fehlermeldung, was bedeutet das?
und in welcher zeile tritt der fehler denn auf? :glaskugel:
|
Re: komische Fehlermeldung, was bedeutet das?
sry, in zeile 8 von unten, ends mit gezählt... die schleife mit dem i
|
Re: komische Fehlermeldung, was bedeutet das?
Das ist eine Leerzeile!
|
Re: komische Fehlermeldung, was bedeutet das?
zeile 8 ?
Delphi-Quellcode:
das wäre mir neu ...
For i:=1 to Anzahl_Zufallszahlen do begin
memo1.Lines.Add(IntToStr(Zufallszahlen[i])); end; // << hier ???? For h:=1 to Anzahl_Zufallszahlen do begin memo1.lines.add(WList1.word[h]); end; end; end. |
Re: komische Fehlermeldung, was bedeutet das?
welche funktionen rufst du denn zuvor auf?
|
Re: komische Fehlermeldung, was bedeutet das?
zeile 10 mit leerzeilen und zeile 8 ohne die leerzeilen mitzuzählen...
habs im quellcode markiert... |
Re: komische Fehlermeldung, was bedeutet das?
drückst du davor irgend etwas oder manipulierst du die variable zuvor?
wenn sie 0 ist, wie i.a.R. bei der objektinitialization dann geht er nicht in die schleife.. und dann kommts auch zu keinen fehlern... also, so ist das nicht zu erklären... was machst du davor...? ansonsten noch 'n tipp: setz einen breakpoint kurz vor der fehlerstelle und steppe mit F7, F8 durch deinen code... |
Re: komische Fehlermeldung, was bedeutet das?
Zitat:
Code:
For i:=0 to Anzahl_Zufallszahlen - 1 do begin
|
Re: komische Fehlermeldung, was bedeutet das?
welchen wert hat denn I?
Zitat:
|
Re: komische Fehlermeldung, was bedeutet das?
Zitat:
Aber wenn er da ne AV bekommt, MUSS es ja quasi an einem ungültigen i liegen :!: |
Re: komische Fehlermeldung, was bedeutet das?
Zitat:
ps: da kommt er aber normal nicht rein, nur wenn er zuvor irgend was anderes macht ... und die obergrenze von 0 nach oben verschiebt... ;-) |
Re: komische Fehlermeldung, was bedeutet das?
Bereichsprüfung aktivieren + Debugger benutzen!
Welchen Wert hat Anzahl_Zufallszahlen? |
Re: komische Fehlermeldung, was bedeutet das?
Anzahl_Zafuallszahlen bekommt den Wert den der Benutzer in einem dialog eingibt, im testfall war das meißtens 10...
wie soll i denn 0 werden? meine prozeduren geben keine werte zurück und da wo die i schleife selbst steht wird i außerhalb der schleife nicht verwendet... |
Re: komische Fehlermeldung, was bedeutet das?
geht das
Delphi-Quellcode:
{$O-}
{$W+} procedure TForm1.Button1Click(Sender: TObject); Var i,h:integer; begin //Zufalls_Zahlen(Anzahl_Zufallszahlen); Zufallszahlen[1] := 234 Zufallszahlen[2] := 4554; Zufallszahlen[3] := 213; Zufallszahlen[4] := 4654; Zufallszahlen[5] := 124; Zufallszahlen[6] := 123234; Zufallszahlen[7] := 234; Zufallszahlen[8] := 234; Zufallszahlen[9] := 9342; Zufallszahlen[10] := 234; Anzahl_Zufallszahlen := 10; WortWandel; For i:=1 to Anzahl_Zufallszahlen do begin memo1.Lines.Add(IntToStr(Zufallszahlen[i])); //--->>> hier is der FEHLER end; For h:=1 to Anzahl_Zufallszahlen do begin memo1.lines.add(WList1.word[h]); end; {$O+} {$W-} |
Re: komische Fehlermeldung, was bedeutet das?
ich bin es schritt für schritt durchgegangen und habs hinbekommen... jetzt hab ich nurnoch 1 problem. wenn ich mein programm starte und eine bestimmte sache mache hängt es sich auf, ohne fehlermeldung... das liegt normalerweise an einer endlosschleife oder? oder kann es noch an etwas anderem liegen?
könnte es sein dass eine for i:=1 to 2800 schleife zu lange braucht? hier hab ich sie:
Delphi-Quellcode:
die schleife mit b läuft bis zu einer zufallszahl (damit wird eine zufällige zeile aus einem textdokument angewählt und anschließend in ein array gespeichert.
procedure TForm1.WortWandel;
var zeile: string; b,h,a: integer; begin WList1.NumberOfWords:=0; // Textdatei wird lesbar gemacht AssignFile(wordlist1,'wordlist1.txt'); reset(wordlist1); // Einlesen bestimmter Zeilen der Textdatei a:=1; for h:=1 to Anzahl_Zufallszahlen do begin for b:=1 to (Zufallszahlen[a]-1) do begin readln(wordlist1); inc(a); end; readln(wordlist1,zeile); WList1.word[h]:=zeile; end; WList1.NumberOfWords:=a; CloseFile(wordlist1); end; schleife mit h wird so oft durchlaufen, wieviele zufällige zeilen der benutzer möchte... hab im testlauf da mal 10 angegeben. kann das den pc überlasten oder länger als 1 sek dauern? |
Re: komische Fehlermeldung, was bedeutet das?
Eigentlich heisst: Neue Frage, neuer Thread!
Du erhöhst a bei jedem Schleifendurchlauf... guck dir das mal genau an. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:17 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