Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   liste in datei specihern (https://www.delphipraxis.net/82481-liste-datei-specihern.html)

-most- 14. Dez 2006 07:44


liste in datei specihern
 
hi,
also hab die aufgabe bekommen ein Programm zur Verwaltung von Artieln eines warenhauses zu programmieren. Es soll Einträge wie Artikelnummer, anzahl , preis etc. enthalten.
Mein problem ist nun folgendes. ich wollte das mit einer einfach verketteten Liste lösen. nur wie kann ich diese in einer Datei speichern? bzw. wieder aufrufen?

thnx

Zwixx 14. Dez 2006 07:55

Re: liste in datei specihern
 
naja, das klingt für mich eher wie eine Datenbankanwendung und nicht wie verkettete Listen. Dadurch hast du auch keine Probleme wenn es mal an Auswertungen oder ähnliches geht. Wenns was kostenloses an Datenbank sein soll, seh dir mal Firebird an, die gibst auch als Version die keinen Datenbankserver benötigt sondern standalone fähig ist.

marabu 14. Dez 2006 07:57

Re: liste in datei specihern
 
Herzlich willkommen in der Delphi-PRAXiS, -most-.

Ist das eine Übungsaufgabe für einen Schüler? Welche Vorkenntnisse hast du? Du musst den Hintergrund etwas beschreiben, sonst schicken wir dich aus Versehen in die Wüste...

Freundliche Grüße vom marabu

-most- 14. Dez 2006 21:24

Re: liste in datei specihern
 
vorkenntnisse sind 2 jahre informatik Unterricht...
spezieller is das dann einfach verkettete Listen, datenstrukturen etc .. also nicht sehr dolle alles ^^

Aufgabe lautet das ich nen programm für nen Warenhaus schreiben soll wo man artikel mit preis, artikelname artikelnummer etc. speichern, aufrufen und verändern kann! (speichern in ner Datei)
also ja es is ne schüler aufgabe!

muss ich da bei datenbakn-arbeit viel beachten???

marabu 17. Dez 2006 07:24

Re: liste in datei specihern
 
Hallo,

bei einer solchen Aufgabenstellung bekommst du doch in der Regel bestimmte Vorgaben. Zwischen dem Arbeiten mit einer Liste (Laden, Speichern, Bearbeiten) und einer Datenbankanwendung bestehen erhebliche Unterschiede - alleine schon was die notwendigen Vorkenntnisse betrifft.

Mein Vorschlag für dich: Speichere deine Liste als CSV-Datei und bearbeite sie in einem StringGrid. Eine Routine zum Speichern findest du als Einstiegshilfe hier. Schau dir dazu einmal die Delphi Online Hilfe zu TStringList genau an.

Man kann natürlich auch ohne jedes Verständnis für Datenbanken einfach datensensitive Komponenten (TDBEdit, ...) auf eine Form setzen, einen TDBNavigator und eine TDataSource dazu und (fast) fertig. Aber dann macht Delphi alles und du nichts. Ob das dem Lehrer gefällt?

Grüße vom marabu

DP-Maintenance 17. Dez 2006 10:35

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.

-most- 11. Jan 2007 07:34

Re: liste in datei specihern
 
so richtig versteh ichs aber dennoch nicht... wie füge ich ne tstringlist ein und mit welchen befehlen kann die datei verändern? bruch ich nun ne tstringlist oder nen stringgrid oder wie? aber trotzdem schonmal vielen dank für die hilfe hat mich zumindest etwas weiter gebracht

marabu 11. Jan 2007 07:46

Re: liste in datei specihern
 
Guten Morgen,

Zitat:

Zitat von -most-
... wie füge ich ne tstringlist ein ...

eine StringList ist keine visuelle Komponente. Zur Anzeige und Manipulation deiner Daten verwendest du dann eher ein StringGrid.

Zitat:

Zitat von -most-
... mit welchen befehlen kann die datei verändern? ...

wenn du ohne Datenbank arbeiten willst, dann wirst du alle Daten auf einen Rutsch in den Speicher einlesen und nach der Bearbeitung als Ganzes wieder wegschreiben. Dein Lehrer hat sicher keine mehrplatzfähige Lösung im Sinn.

Zitat:

Zitat von -most-
... Einträge wie Artikelnummer, anzahl , preis etc. ...

Das solltest du sehr genau wissen, bevor du überhaupt anfängst. Mach dir eine Tabelle:

Code:
Entität: Artikel

Attribut      Beschreibung
============== ====================================
Nummer        eindeutige Zahl mit 6 Stellen
Bezeichnung   maximal 100 Stellen
VKPreis       Verkaufspreis
Beschreibung  mehrzeiliger Text
Bestand       Vorratsmenge
etc.
Ohne eine solche Tabelle kann das Schreiben eines Programms schnell frustrierend werden. Wenn du alles zusammengestellt hast, kannst du das Ergebnis hier veröffentlichen und erhältst dann bei Bedarf weitere Hilfe.

Freundliche Grüße

-most- 18. Jan 2007 07:34

Re: liste in datei specihern
 
das verwirrt mich hier alles... erstmal muss ich sagen das ich keine ahnung habe! so ganz allgemein: ich bin unfähig. Was ich kann ist mit verketteten listen arbeiten, da hab ich alles was ich für diese aufgabe brauche (Nächsten eintrag, vorheriger eintrag,neues listenelement erstellen, listenelement löschen etc) nur leider wird das ja bei jedem programmstart gelöscht.Um nochmal vorn anzufangen: wie schaff ich es, das die listenelemente in einer datei gespeichert werden? ist das überhaupt möglich?

Hab ja versucht mich mit csv-dateien, Tstringlist usw auseinanderzusetzten aber wie das ganze letztendlich in einen quelltext bringe der dann sogar funktioniert weiß ich nicht... da fehlen mir warscheinlich die vorkenntnisse, weil die sind sehr gering. Speichern allegmeint hatte ich noch nie gehabt. Hab mir da was in unseren Dümmlichen lehrbuch durchgelesen, das half mir aber auch nich weiter...

das is jetzt hier mein letzter versuch, danach werd ich hier keinen mehr nerven (und ich weiß wie sehr sowas nerven kann :) )

marabu 18. Jan 2007 08:59

Re: liste in datei specihern
 
Tut mir leid, wenn ich dich verwirrt habe. Und du nervst auch ganz sicher nicht.

Natürlich kannst du auch eine verkettete Liste als CSV-Datei speichern:

Delphi-Quellcode:
type
  TArtikel = class
    Next: TArtikel;
    Nummer: Cardinal;
    Bezeichnung: String;
  end;

var
  ArtikelListe: TArtikel;

procedure Save(artikel: TArtikel; fn: TFileName);
var
  s, a: TStrings;
begin
  s := TStringList.Create;
  a := TStringList.Create;
  s.Add('"Nummer","Bezeichnung"'); // ...
  while Assigned(artikel) do
  begin
    a.Add(IntToStr(artikel.Nummer));
    a.Add(artikel.Bezeichnung);
    // ...
    s.Add(a.CommaText);
    a.Clear;
    artikel := artikel.Next;
  end;
  a.Free;
  s.SaveToFile(fn);
  s.Free;
end;

begin
  ArtikelListe := TArtikel.Create;
  with ArtikelListe do
  begin
    Nummer := 1;
    Bezeichnung := 'Handtuch';
    Next := TArtikel.Create;
  end;
  with ArtikelListe.Next do
  begin
    Nummer := 2;
    Bezeichnung := 'Mausefalle';
  end;
  Save(ArtikelListe, ChangeFileExt(ParamStr(0), '.txt'));
end.
Getippt und nicht getestet.

Ich habe das Listenelement TArtikel als class und nicht als record definiert, weil ich dann New() und Dispose() durch Create() und Free() ersetzen kann - was ich für didaktisch sinnvoll halte. Trotzdem habe ich versucht so nahe wie möglich an deiner über Zeiger verketteten Liste zu bleiben, damit du folgen kannst.

Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:01 Uhr.
Seite 1 von 2  1 2      

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