double-variabeln vergleichen <- gelösst
-
- Beiträge: 91
- Registriert: Sa 6. Feb 2010, 15:58
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: double-variabeln vergleichen
Ich hab das Programm ja schon längst fertig
nur da sind noch welche Fehler, die ich allein nicht lösen kann
das hab ich doch vorrher alles schon erklärt -.-
Zeilenanzahl ist max. 1000
und die arrays haben max. 1000 Zeilen
na klar hab ich es verstanden
ich hab es doch selbst geschrieben -.-
nur da sind noch welche Fehler, die ich allein nicht lösen kann
das hab ich doch vorrher alles schon erklärt -.-
Zeilenanzahl ist max. 1000
und die arrays haben max. 1000 Zeilen
na klar hab ich es verstanden
ich hab es doch selbst geschrieben -.-
Re: double-variabeln vergleichen
Wichtig wäre aber der genaue Code.Stephanie H. hat geschrieben:Ich hab das Programm ja schon längst fertig
nur da sind noch welche Fehler, die ich allein nicht lösen kann
das hab ich doch vorrher alles schon erklärt -.-
Zeilenanzahl ist max. 1000
und die arrays haben max. 1000 Zeilen
na klar hab ich es verstanden
ich hab es doch selbst geschrieben -.-
z.B. Setlength mit 1000 reserviert 1000 Elemente. 0..1000 sind 1001 Elemente.
-
- Beiträge: 91
- Registriert: Sa 6. Feb 2010, 15:58
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: double-variabeln vergleichen
Hier habt ihr noch mal das mit SetLength:
ich verstehe nicht was euer Problem ist mir zu helfen
irgendwie seit ihr ziemlich gemein
Code: Alles auswählen
SetLength(X, Zeilenanzahl);
SetLength(Y, Zeilenanzahl);
irgendwie seit ihr ziemlich gemein

Re: double-variabeln vergleichen
Die Antwort steht doch oben.Stephanie H. hat geschrieben: ich verstehe nicht was euer Problem ist mir zu helfen
irgendwie seit ihr ziemlich gemein
Wenn du SetLength(X,1000) machst, dann ist das höchste Element 999 (0 ist auch eines).
Wenn du von 0 to 1000 loopst greifst du aber auf das Element 1000 zu. Bumms.
Das kannst du gerne testen:
writeln((High(X));
-
- Beiträge: 91
- Registriert: Sa 6. Feb 2010, 15:58
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: double-variabeln vergleichen
ja toll da kommen wieder mehr fehler 
Hier die Fehlermeldung:
An unhandled exception occured at $00401AC9 :
ERangeError : Range check error
$00401AC9 main, line 138 of project.lpr
da klappt immer nicht beim letzten durchlauf

Code: Alles auswählen
var
k : string;
xkoordinate : integer;
ykoordinate : integer;
X : array of integer;
Y : array of integer;
i : integer;
Zeilenanzahl:= Zeilenanzahl -1;
SetLength(X, Zeilenanzahl);
SetLength(Y, Zeilenanzahl);
WHILE NOT eof (workfile) DO // da hab ich vorher ne datei geööfnet...
begin
for i:= 0 to Zeilenanzahl do begin
readln (workfile, name); {liest die x. Zeile}
writeln(name);
k:=name;
if k <> '' then begin
xkoordinate:= StrToInt(Copy(k,1, Pos(' ',k)-1));
ykoordinate:= StrToInt(Copy(k,Pos(' ', k)+1,Length(k)));
writeln('"',xkoordinate,'"');
writeln('"',ykoordinate,'"');
writeln(i);
X[i]:=xkoordinate;
Y[i]:=ykoordinate;
end;
end;
end;
An unhandled exception occured at $00401AC9 :
ERangeError : Range check error
$00401AC9 main, line 138 of project.lpr
da klappt immer nicht beim letzten durchlauf
Re: double-variabeln vergleichen
Joh, bringt ja auch nichts, wenn du die Zeilenanzahl vor dem Setlength erniedrigst.
Langsam glaube ich, du machst Spielchen mit uns...
Langsam glaube ich, du machst Spielchen mit uns...
-
- Beiträge: 91
- Registriert: Sa 6. Feb 2010, 15:58
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: double-variabeln vergleichen
hää so meintest du das doch -.-
übrigens ich brauch eure scheiß verdammte hilfe nicht mehr
ich hab das nämlich jetzt alles selbst gelösst
ihr opfer
übrigens ich brauch eure scheiß verdammte hilfe nicht mehr
ich hab das nämlich jetzt alles selbst gelösst
ihr opfer
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: double-variabeln vergleichen
Also das Problem bei SetLenght ist einfach:
Mit der Schreibweise SetLenght(MyArray, 10); gibst du dem Array: MyArray nur eine Größe von 10. Das bedeutet, du hast zugriff auf 11 Zeilen. SetLenght(MyArray, 10,10); gibst nur nur der letzten Zeile eine Spalten Anzahl: 10 spalten, aber nicht den davor. Du brauchst unbedingt eine Schleife. So das du alle 10 Zeilen auch eine Spalten Länge geben kannst.
Du könntest ja auch Theoretisch jeder Zeile eine andere Spalten Anzahl geben:
-------------------
-------------
--------
--------------------
Oder aber auch alle gleich:
------------------------------
------------------------------
------------------------------
------------------------------
Wenn du es jetzt Statisch Machst, hast du immer die gleiche Spalten-Anzahl bei den Zeilen.
Das war jetzt etwas "Array-Kunde".
Mit der Schreibweise SetLenght(MyArray, 10); gibst du dem Array: MyArray nur eine Größe von 10. Das bedeutet, du hast zugriff auf 11 Zeilen. SetLenght(MyArray, 10,10); gibst nur nur der letzten Zeile eine Spalten Anzahl: 10 spalten, aber nicht den davor. Du brauchst unbedingt eine Schleife. So das du alle 10 Zeilen auch eine Spalten Länge geben kannst.
Du könntest ja auch Theoretisch jeder Zeile eine andere Spalten Anzahl geben:
-------------------
-------------
--------
--------------------
Oder aber auch alle gleich:
------------------------------
------------------------------
------------------------------
------------------------------
Wenn du es jetzt Statisch Machst, hast du immer die gleiche Spalten-Anzahl bei den Zeilen.
Das war jetzt etwas "Array-Kunde".
MFG
Michael Springwald
Michael Springwald
Re: double-variabeln vergleichen
Aber leider falsch.pluto hat geschrieben:Das war jetzt etwas "Array-Kunde".
Mit SetLength(arr,10) reservierst du 10 Elemente (nicht 11). Also arr[0] bis arr[9]. arr[10] gibt's dann nicht!!.
-
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: double-variabeln vergleichen
@theo und pluto: Warum helft ihr noch? Also ich finde, Stephanie, langsam reicht's. Es ist echt kein Problem, wenn du was nicht verstehst, in solchen Fällen fragt man nochmal nach und recherchiert vorher vielleicht ein bisschen. Hier im Forum versuchen einige grade, dir wirklich qualifiziert und gut und geduldig zu helfen, du nimmst das aber als selbsverständlich, als "Pflicht" hin, wirst überheblich und zuletzt unverschämt.Stephanie H. hat geschrieben:hää so meintest du das doch -.-
übrigens ich brauch eure scheiß verdammte hilfe nicht mehr
ich hab das nämlich jetzt alles selbst gelösst
ihr opfer
Glaubst du, es macht den Leuten hier im Forum Spaß, dann noch zu helfen? Ich finde das extrem schade und sowas habe ich noch auf keiner einzigen Mailingliste und in keinem Forum je gesehen.
Und zu der Sache "selbst gelößt": Das ist ja auch grade der Sinn dabei. Keiner schreibt hier fertige Programme für den anderen, aber jeder ist bereit, Hilfestellungen zur Selbsthilfe zu geben.
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: double-variabeln vergleichen <- gelösst
Musst du alles so genau nehmen ? Ob das nun 11 oder 10 sind, spielt nun wirklich keine Große Rolle. Das kann man durch simples Ausprobieren herrausfinden.Aber leider falsch.
Mit SetLength(arr,10) reservierst du 10 Elemente (nicht 11). Also arr[0] bis arr[9]. arr[10] gibt's dann nicht!!.
@Targion
Dann musst du nur mal in einem anderen Forum schauen. Es gibt Foren, da gibt sich der Frage Stelle sehr viel Mühe und bekommt solche Antworten, wie "Stephanie H." Fragt *G*.... Es ist schon Traurig....
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 768
- Registriert: Mo 4. Mai 2009, 13:24
- OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
- CPU-Target: x86_64-linux-qt/gtk2
- Kontaktdaten:
Re: double-variabeln vergleichen <- gelösst
Ob das nun 'ne 1 oder eine 0 ist, spielt doch nun wirklich keine Rollepluto hat geschrieben:Musst du alles so genau nehmen ?

Popcorn bitte!
Re: double-variabeln vergleichen <- gelösst
Hihi! Scherzkeks! Das war aber wahrscheinlich genau Stephanie's Problem.pluto hat geschrieben: Musst du alles so genau nehmen ? Ob das nun 11 oder 10 sind, spielt nun wirklich keine Große Rolle. Das kann man durch simples Ausprobieren herrausfinden.
@Targion: Mein Kommentar war zu Pluto's Beitrag gemeint. Falsches kann man nicht einfach so stehen lassen, sonst glaubt's am Ende noch ein Unschuldiger.
