![]() |
S: Hilfe bei Turbo Pascal
Hallo
Ich muss mal wieder ein kleines Projekt in TP schreiben, aber da es schon sehr lange her ist das ich dass das letzte mal gemacht habe fallen mir einige Befehle, etc. nicht mehr ein. Folgende Probleme: 1. Wie kann ich den Fehler abfangen, damit bei einer Integervariablen auch wirklich nur Ziffern eingegeben werden und somit praktisch die Eingabe nach einem Fehler wiederholt werden muss? 2. Wie bastel ich ein dynamisches Array? Also sowas wie: write('bitte Arraygröße eingeben: '); readln(max); type feld = array[1..max] of integer; Danke schonmal für eure Hilfe! mfg Christian |
Re: S: Hilfe bei Turbo Pascal
Zitat:
2. Das könnte mit TP schwierig werden. Du könntest evtl. versuchen mit verketteten listen zu arbeiten. Aber bei TP gab es noch keine dynamischen Arrays. Alternativ könntest du eine maximale array größe angeben. die nutzereingabe darf aber dann nicht höher sein. mfG mirgae228 |
Re: S: Hilfe bei Turbo Pascal
Hi mirage228
Zitat:
Zitat:
feld = array[1..1000] of integer; feld.setLength(1001); mfg cook |
Re: S: Hilfe bei Turbo Pascal
Zitat:
Wie gesagt, in der Schule machen wir das so, dass wir die eingegebene Größe in einer Variable speichern. Das Array hat von vorne rein eine feste Maximalgröße und der eingegebene Wert darf nicht größer als dieser sein. Eventuell meinte deine Aufgabenstellung eine Festgröße über 1000 (also Array[1..1000] of Integer oder so)?! mfG mirage228 |
Re: S: Hilfe bei Turbo Pascal
Zitat:
Es sollen mind. 1000 aber auch mehr Werte eingegeben werden können. Da aber nach oben keine Grenze gesetzt ist kann ich nicht einfach array[1..1500] oder so machen. Aber im Endeffekt wird mir wohl nichts anderes übrig bleiben als eine Obergrenze zu setzen. gruß cook |
Re: S: Hilfe bei Turbo Pascal
Guten Morgen,
wenn ich mich recht erinnere gab es in TP7 (benutzt Du TP7?) die Klassen TCollection und TSortedColletion. Die wären eine Lösung für ein "dynamisches Array" ohne dass Du selbst Ketten oder so programmieren müßtest. Viel Erfolg. Niels |
Re: S: Hilfe bei Turbo Pascal
Hallo
Zitat:
so far cook |
Re: S: Hilfe bei Turbo Pascal
Warum nicht einfach eine nette kleine verkettet Liste ???
Geht ganz einfach:
Code:
Eine Collection wär hier mit Kanonen auf Spatzen geschossen:)
TYPE
PElement = ^TElement; TElement = record Wert : Integer; Next : PElement; end; var Anf : PElement; (* Root-Zeiger *) Wrk : Pelement; (* Arbeits-Zeiger *); procedure AddWert(AWert:integer); begin if ANF = NIL then begin New(ANF) WRK := ANF; end else begin wrk := wrk^.next; New(wrk); end; wrk^.wert := AWert; end; |
Re: S: Hilfe bei Turbo Pascal
Deine Obergrenze ist 2147483647, denn mehr kann man in TP nicht als Integer-Wert eingeben, jedenfalls nicht dass ich wüsste...
|
Re: S: Hilfe bei Turbo Pascal
Hi.
Du könntest ein dynamisches array mit einer statischen-array-pointer-deklaration faken :-D In etwa so: Du reservierst dir den benötigten speicher manuell (count*sizeOf(TElement)) und weisst den poiter dem array-pointer zu. In etwa so:
Delphi-Quellcode:
Ich hoffe das geht so, oder so ähnlich, in TP...in delphi funkt das.
Type
PArray = ^TArray; TArray = array[0..$FFFF] of integer; var dynArrPtr:pArray begin getMem(pointer(dynArrPtr), count*sizeOf(integer)); // array auf speicher mappen //zugriff wie gehabt // dynArrPtr^[408] := 1 + 2; end; Musst nur aufpassen das du die array-grenze nicht verletzt. Das kann man aber nur mit eindimensionalen arrays machen :wink: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:48 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