AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

S: Hilfe bei Turbo Pascal

Ein Thema von cook · begonnen am 25. Apr 2004 · letzter Beitrag vom 28. Sep 2005
Antwort Antwort
Seite 1 von 2  1 2      
cook

Registriert seit: 4. Nov 2003
Ort: Ilmenau
37 Beiträge
 
Delphi 6 Enterprise
 
#1

S: Hilfe bei Turbo Pascal

  Alt 25. Apr 2004, 17:25
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
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: S: Hilfe bei Turbo Pascal

  Alt 25. Apr 2004, 17:34
Zitat von cook:
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
1. Zu ersteres gibt es die prozedur Val, die einen Fehlercode zurückgibt. ist dieser <> 0 dann war die eingabe kein integer
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
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
cook

Registriert seit: 4. Nov 2003
Ort: Ilmenau
37 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: S: Hilfe bei Turbo Pascal

  Alt 25. Apr 2004, 18:47
Hi mirage228

Zitat:
1. Zu ersteres gibt es die prozedur Val, die einen Fehlercode zurückgibt. ist dieser <> 0 dann war die eingabe kein integer
Danke! Ich wusste doch da gab es was

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.
Hm... das ist natürlich ungünstig. Dann frag ich mich warum uns die Aufgabenstellung so gestellt wurde (also ein Array of Integer mit Größe >=1000). Im nachhinein kann man somit die Größe eines deklarierten Arrays ja auch nicht mehr ändern!? Also sowas Delphimäßiges wie:
feld = array[1..1000] of integer;
feld.setLength(1001);

mfg cook
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

Re: S: Hilfe bei Turbo Pascal

  Alt 25. Apr 2004, 18:54
Zitat von cook:
Hm... das ist natürlich ungünstig. Dann frag ich mich warum uns die Aufgabenstellung so gestellt wurde (also ein Array of Integer mit Größe >=1000). Im nachhinein kann man somit die Größe eines deklarierten Arrays ja auch nicht mehr ändern!? Also sowas Delphimäßiges wie:
feld = array[1..1000] of integer;
feld.setLength(1001);
Nein, ein nachträgliches setzen der Größe ist nicht möglich.
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
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
cook

Registriert seit: 4. Nov 2003
Ort: Ilmenau
37 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: S: Hilfe bei Turbo Pascal

  Alt 25. Apr 2004, 19:26
Zitat:
Eventuell meinte deine Aufgabenstellung eine Festgröße über 1000 (also Array[1..1000] of Integer oder so)?!
Leider nicht, oder zumindest nicht ganz.
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
  Mit Zitat antworten Zitat
nieurig

Registriert seit: 26. Apr 2004
113 Beiträge
 
Delphi 6 Professional
 
#6

Re: S: Hilfe bei Turbo Pascal

  Alt 26. Apr 2004, 07:20
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
Erspare Dir die Gedanken über ungelegte Eier !!!
  Mit Zitat antworten Zitat
cook

Registriert seit: 4. Nov 2003
Ort: Ilmenau
37 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: S: Hilfe bei Turbo Pascal

  Alt 26. Apr 2004, 13:27
Hallo

Zitat:
(benutzt Du TP7?)
Nein. Dies soll kein objektorientiertes Programm werden, deshalb kann ich auch keine Klassen verwenden. Ich hab das Array halt jetzt statisch gemacht. Wird schon hinhauen. Trotzdem Danke!

so far
cook
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: S: Hilfe bei Turbo Pascal

  Alt 26. Apr 2004, 14:05
Warum nicht einfach eine nette kleine verkettet Liste ???

Geht ganz einfach:

Code:
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;
Eine Collection wär hier mit Kanonen auf Spatzen geschossen
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#9

Re: S: Hilfe bei Turbo Pascal

  Alt 26. Apr 2004, 14:38
Deine Obergrenze ist 2147483647, denn mehr kann man in TP nicht als Integer-Wert eingeben, jedenfalls nicht dass ich wüsste...
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#10

Re: S: Hilfe bei Turbo Pascal

  Alt 26. Apr 2004, 15:33
Hi.

Du könntest ein dynamisches array mit einer statischen-array-pointer-deklaration faken
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:
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;
Ich hoffe das geht so, oder so ähnlich, in TP...in delphi funkt das.
Musst nur aufpassen das du die array-grenze nicht verletzt. Das kann man aber nur mit eindimensionalen arrays machen
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:45 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