![]() |
Frage bezüglich arrays
Ich hab ein Delphi buch und ich verstehe da was nicht vielleicht könnt ihr mir helfen:
Code:
Datensatz an aktueller Position(index) einfügen:
type TPersDat = record
name:string[20]; geburt:TDateTime; student:boolean; tel:Longint end; var personen: array of TPersDat; pm, // Anzahl Datensätze index:Word // aktuelle Datensatznummer(1,2,3...pm)
Code:
Also Ich verstehe das irgendwie null die procedure Tperson.dsneu
procedure TPerson.dsneu;
var i:Word; begin Inc(pm); Setlength(personen,pm); for i:=pm downto index+2 do Personen[i-1]:=Personen[i-2]; inc(index) end; woher weiss ich welcher wert pm hatt oder index ??? kann mir mal vielleicht jemand die procedure erklären das vorallem die for Anweisung kommt mir chinesisch for :( bzw da noch eine prozedur wo ich nicht verstehe ich kann mich das irgendwie nicht reindenken :( kann mir vielleicht jemand erklären wie man das sehen muss?
Code:
zur beschreibung steht "Datensatz an aktueller Position (index) löschen. Wäre dankbar für eure hilfe.
procedure Tperson.dsLoesch;
var i:word; for i:=index to pm-1 do personen[i-1]:=personen[i]; dec(pm); setlength(personen,pm) //dimension verkürzen end; |
hmm,
das sieht mir schwer nach globalen Variablen aus.
|
Re: Frage bezüglich arrays
naja das hilft mir nicht weiter :mrgreen:
|
Re: Frage bezüglich arrays
ok die procedure löschen hab ich gerade geschnallt glaub ich hatte vergessen das wenn man 0-1 macht man wieder beim höhchsten zeichen rauskommt.
Die prozedure tut immer den höhchsten wert in den index sozusagen null reinschreiben dann den datensatzt um eins verkürzen richtig? und das macht es bis nur noch ein datensatzt übrig ist. |
Re: Frage bezüglich arrays
Lass es mich so erklären:
erstens ist das ein dynamisches Array welches nichts weiter ist, als eine Kette von zeigern; in deinem Falle auf Records des typs x. Wer das Delphi Buch geschrieben hat, war blutiger Anfänger :dancer: . Seit wann benutzt man globale Variablen für die Index und Größenermittlung von Arrays ? Dazu gibts die Funktion High(). Sei's drum. Die Funktion DSNEU macht nichs weiter, als
Code:
erhöht die globale Variable pm um 1 und anschließend auch das Array.
Inc(pm);
Setlength(personen,pm); geht einfacher mit:
Code:
SetLength(personen, high(personen)+1);
Code:
hier verschiebt er das gesamte Array vom Ende zum Anfang
for i:=pm downto index+2 do Personen[i-1]:=Personen[i-2];
was die var index für einen einfluß hab mag ich nicht deuten, das Oracle ist im Urlaub :-). Wenn index = 0 dann krachts zumindest, weil Index out of Range Wenn ich mir die nächste Funktion anschaue, soll index wohl die aktuelle Position sein. grübel; dann ist der Sinn der Schleife darin, **keine Ahnung***, weil weiterhin Grütze. Nehmen wir an Index ist 0 und die Arraygröße ist 1 , dann heist die Schleife: for 0:=1 downto 2 , oje oje.
Code:
hier löscht er einen Eintrag indem er alles ab dem Eintrag um eins nach vorn schiebt und den Letzen löscht, sprich das Array wieder verkleinert.
var i:word;
for i:=index to pm-1 do personen[i-1]:=personen[i]; dec(pm); setlength(personen,pm) //dimension verkürzen end; grez msch |
Re: Frage bezüglich arrays
kennst du vielleicht ein gutes buch mit vielen praktischen beispielen was nicht 1000 seiten lang ist? Ich bin kein vollanfänger aber auch nicht gerade "fortgeschritten" also etwas ahnung habe ich ich wollte son buch mal durcharbeiten damit ich etwas mehr übung kriege naja vielleicht kannst du mir ein sehr gutes empfehlen? Am besten wäre so 500 seiten rum :mrgreen:
und was bedeutet index out of range :)? Ich bräuchte ein buch mit ganz vielen praktischen beispiel prorgammen wo man machen muss und testen weil wen man etwas macht lernt man am besten ich zumindestens aber ich hab mir einfach mal eins gekauft naja 1200 seiten bin rgad bei 108 :freak: und manchmal sind echt komische sachen drin |
Re: Frage bezüglich arrays
maybe kann ja wer hier ein buch empfehlen mit viel praxisanwendung :bounce1:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:21 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