double-variabeln vergleichen <- gelösst

Für Fragen von Einsteigern und Programmieranfängern...
Stephanie H.
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

Beitrag von Stephanie H. »

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 -.-

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: double-variabeln vergleichen

Beitrag von theo »

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 -.-
Wichtig wäre aber der genaue Code.
z.B. Setlength mit 1000 reserviert 1000 Elemente. 0..1000 sind 1001 Elemente.

Stephanie H.
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

Beitrag von Stephanie H. »

Hier habt ihr noch mal das mit SetLength:

Code: Alles auswählen

SetLength(X, Zeilenanzahl);
    SetLength(Y, Zeilenanzahl);
ich verstehe nicht was euer Problem ist mir zu helfen
irgendwie seit ihr ziemlich gemein :(

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: double-variabeln vergleichen

Beitrag von theo »

Stephanie H. hat geschrieben: ich verstehe nicht was euer Problem ist mir zu helfen
irgendwie seit ihr ziemlich gemein :(
Die Antwort steht doch oben.
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));

Stephanie H.
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

Beitrag von Stephanie H. »

ja toll da kommen wieder mehr fehler :(

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;
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

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: double-variabeln vergleichen

Beitrag von theo »

Joh, bringt ja auch nichts, wenn du die Zeilenanzahl vor dem Setlength erniedrigst.
Langsam glaube ich, du machst Spielchen mit uns...

Stephanie H.
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

Beitrag von Stephanie H. »

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

pluto
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

Beitrag von pluto »

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".
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: double-variabeln vergleichen

Beitrag von theo »

pluto hat geschrieben:Das war jetzt etwas "Array-Kunde".
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
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

Beitrag von Targion »

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
@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.
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.

pluto
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

Beitrag von pluto »

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!!.
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
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

Scotty
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

Beitrag von Scotty »

pluto hat geschrieben:Musst du alles so genau nehmen ?
Ob das nun 'ne 1 oder eine 0 ist, spielt doch nun wirklich keine Rolle :mrgreen:.
Popcorn bitte!

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: double-variabeln vergleichen <- gelösst

Beitrag von theo »

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.
Hihi! Scherzkeks! Das war aber wahrscheinlich genau Stephanie's Problem.

@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. ;-)

Antworten