Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   Delphi [Non VCL] Dynamisches Array erstellen, füllen & ausgeben (https://www.delphipraxis.net/169576-%5Bnon-vcl%5D-dynamisches-array-erstellen-fuellen-ausgeben.html)

Back2Code 30. Jul 2012 11:02

[Non VCL] Dynamisches Array erstellen, füllen & ausgeben
 
Delphi-Quellcode:
// Dynamisches Array erstellen, füllen & ausgeben
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  anzahl,anzahl1,i,o: integer;
  eingabe: string;
  ListArray: array of string;
  valid: boolean = True;

begin
  WriteLn('########################################');
  WriteLn('Wieviele Namen moechten Sie eintragen?');
  ReadLn(anzahl);
  SetLength(ListArray, anzahl);

  for i := 0 to anzahl - 1 do

    begin
      if i = anzahl -1 then
      begin
        WriteLn('Geben sie bitte den letzten Namen ein: ');
        end
        else
      WriteLn('Geben sie bitte den Namen ein: ');
      ReadLn(ListArray[i]);
    end;


  WriteLn('');

    WriteLn('Alle Namen wurden eingespeichert!');

      WriteLn('');

    WriteLn('Ausgabe aller Namen erfolgt...');

      WriteLn('');

  for o := 0 to anzahl - 1 do
    begin
      WriteLn(ListArray[o]);
    end;


    WriteLn('');
    WriteLn(' Aktueller Indexstand : ' + IntToStr(anzahl));

    while valid = True do

    begin
    WriteLn(' Geben Sie einen Index an, um das entsprechende Item auszugeben: ');
    ReadLn(anzahl1);
    if anzahl1 > anzahl then
    begin
    WriteLn('Item existiert nicht!');
    end
    else
    begin
    WriteLn(ListArray[anzahl1-1]);
    Valid := False;
    end;
  end;

    WriteLn('');
    WriteLn('########################################');
    WriteLn('Programmende');
    WriteLn('');
    ReadLn;
end.

p80286 30. Jul 2012 11:12

AW: [Non VCL] Dynamisches Array erstellen, füllen & ausgeben
 
Seehr hübsch.
Aber warum mal "Namen" und dann "Items"?
Und was passiert wenn man als "Anzahl" z.B. Anzahl eingibt?
Außerdem ist mir der Eigentliche Programmablauf nicht so ganz klar, aber das liegt wohl an der sehr individuellen Formatierung.

Übrigens ist ein String als Element eines Dyn.Arrays nicht so geeignet,eine Stringlist wäre da geeigneter.

ach ja gibst Du den alozierten Speicher auch mal wieder frei?

Gruß
K-H

Back2Code 30. Jul 2012 11:17

AW: [Non VCL] Dynamisches Array erstellen, füllen & ausgeben
 
Zitat:

Aber warum mal "Namen" und dann "Items"?
Hab ich wohl noch vergessen zu ändern, da ja jeder gespeicherte Name im Array ein "Index" ist.


Zitat:

Und was passiert wenn man als "Anzahl" z.B. Anzahl eingibt?
Noch nicht getestet. Da ich keine Exception eingebaut habe wirds zu nem Fehler kommen.


Und der Speicher wird nicht freigegeben :o Dass es nicht perfekt ist, war mir vornerein klar ich bin ja auch noch ein Anfänger :)

p80286 30. Jul 2012 11:23

AW: [Non VCL] Dynamisches Array erstellen, füllen & ausgeben
 
Da hab' ich wohl etwas falsch verstanden.
Nichts für ungut, da Du ein Anfänger bist, war es unverzeilich Dich auf Schwächen in Deinem Programm hin zu weisen.

Gruß
K-H

Back2Code 30. Jul 2012 11:27

AW: [Non VCL] Dynamisches Array erstellen, füllen & ausgeben
 
Zitat:

Zitat von p80286 (Beitrag 1176280)
Da hab' ich wohl etwas falsch verstanden.
Nichts für ungut, da Du ein Anfänger bist, war es unverzeilich Dich auf Schwächen in Deinem Programm hin zu weisen.

Gruß
K-H

Ich verzeih dir :wink:

Wie gibt man den Speicher denn genau wieder frei am Ende? Und wie könnte man am besten am Anfang abfragen, dass nur Zahlen bei der Anzahlabfrage eingegeben werden ansonsten ne Fehlermeldung ausgeben.

Hab eben schon was mit ne IF Abfrage versucht nur das wollte nicht so ganz.:oops:

Medium 30. Jul 2012 11:30

AW: [Non VCL] Dynamisches Array erstellen, füllen & ausgeben
 
Drei Dinge:

1) Das ganze hat nichts mit NonVCL zu tun. Du benutzt sie zwar nicht, aber da man für Arrays die VCL ohnehin nicht braucht, ist dies keine Besonderheit deines Codes.
2) Wenn du schon weisst, dass der Code Schwächen hat, dann sollte dir doch auch klar sein, dass der kaum als Musterbeispiel für eine Code-Lib taugt.
3) Das Beispiel ist willkürlich und unnötig in einen Kontext gebracht. Ein kurzes allgemeines Tutorial mit Erläuterungen zu z.B. SetLength() wäre verständlicher. Ein auscodiertes Beispiel würde dort dann eher als Anwndungsbeispiel Platz finden.

Punkt 2 ist imho der ungünstigste. Wenn man schon Muster, Tipps für andere, gerade Anfänger, posted, sollte alles so sauber und best-practice sein wie es eben nur geht. Fehleranfälliger und mäßig formatierter unkommentierter Code ist wertfrei.

EWeiss 31. Jul 2012 07:20

AW: [Non VCL] Dynamisches Array erstellen, füllen & ausgeben
 
Zitat:

Zitat von Robin2k (Beitrag 1176281)
Zitat:

Zitat von p80286 (Beitrag 1176280)
Da hab' ich wohl etwas falsch verstanden.
Nichts für ungut, da Du ein Anfänger bist, war es unverzeilich Dich auf Schwächen in Deinem Programm hin zu weisen.

Gruß
K-H

Ich verzeih dir :wink:

Wie gibt man den Speicher denn genau wieder frei am Ende? Und wie könnte man am besten am Anfang abfragen, dass nur Zahlen bei der Anzahlabfrage eingegeben werden ansonsten ne Fehlermeldung ausgeben.

Hab eben schon was mit ne IF Abfrage versucht nur das wollte nicht so ganz.:oops:

Warum verzeihen ?
Es war Ironisch von p80286 gemeint.
Denke eher du solltest dir selbst verzeihen das du nicht verstanden hast das er dir nur Helfen wollte.
Gerade dann wenn man Anfänger ist sollte man Dankbar sein über die Hilfe die einem widerfährt.

Das ist was ich hier so sehr vermisse ein Einfaches "DANKE"
Anstelle rumzumosern dafür das man Tip's und Hilfestellungen umsonst bekommt.

Ansonsten zu deiner Frage.
Zitat:

Wie gibt man den Speicher denn genau wieder frei am Ende?
Setze dein Array doch auf den Urzustand zurück .. der wäre wenn du nur Strings verwendest auf die länge "0"
Hätte dir p80286 auch verraten wenn du etwas freundlicher gewesen wärest.


gruss

Bummi 31. Jul 2012 08:06

AW: [Non VCL] Dynamisches Array erstellen, füllen & ausgeben
 
Zitat:

ach ja gibst Du den alozierten Speicher auch mal wieder frei?
Kinders, ich glaube ich werde alt, welchen Speicher soll man warum wieder freigeben?

Back2Code 31. Jul 2012 08:09

AW: [Non VCL] Dynamisches Array erstellen, füllen & ausgeben
 
Ich versteh nicht, wieso hier immer alle gleich so eingeschnappt sind, wenn man eine präzise Frage stellt..Soll ich noch 100 Herzen + Bitte posten damit es "freundlicher" rüber kommt?

EWeiss 31. Jul 2012 08:15

AW: [Non VCL] Dynamisches Array erstellen, füllen & ausgeben
 
Zitat:

Zitat von Robin2k (Beitrag 1176395)
Ich versteh nicht, wieso hier immer alle gleich so eingeschnappt sind, wenn man eine präzise Frage stellt..Soll ich noch 100 Herzen + Bitte posten damit es "freundlicher" rüber kommt?

Nö. Ein Danke hätte gereicht. :)
Sowas kommt immer gut an und sind doch nur 4 nee warte mal 5 Buchstaben.

gruss


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:16 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf