Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Speichern und Lesen von Daten (https://www.delphipraxis.net/115960-speichern-und-lesen-von-daten.html)

KeyBe 20. Jun 2008 15:35


Speichern und Lesen von Daten
 
Hallo,

Wie kann ich zahlenwerte, die ein programm ermittelt hat, ganz einfach abspeichern (die datei soll vor der ersten benutzung noch nicht existieren)? Die datei, die das programm bei der ersten benutzung quasi erstellt, soll möglichst ne txt sein, damit der user die zahlenwerte dann in der txt-datei ganz einfach nachlesen kann. Außerdem soll das programm (mit einem 2. button) die Zahlenwerte wieder aus der txt-datei auslesen können.
Ach ja, es soll möglich sein, dass das programm von mehreren leuten gleichzeitig (also die exe quasi mehrfach, zur selben zeit geöffnet ist) benutzt wird und alle sowohl auslesen, als auch speichern können.

Vielen danke im voraus!

keybe

SaFu 20. Jun 2008 15:39

Re: Speichern und Lesen von Daten
 
das schonmal zu Dateien erstellen


Delphi-Quellcode:
Var
 TXT :Integer;

if not FileExists(deinpfad + '\text.txt') then
begin
 TXT:= FileCreate(deinpfad + '\text.txt')
end;
FileClose(TXT);
Wenn die Datei von mehreren gelesen werden soll muss du die Datei Zentral ablegen und einfach auf den Pfad der Datei verweisen

Gruß sascha

KeyBe 20. Jun 2008 15:41

Re: Speichern und Lesen von Daten
 
danke...werds gleich mal probiern

KeyBe 20. Jun 2008 19:37

Re: Speichern und Lesen von Daten
 
ok...also das funktioniert...danke erstmal...
wenn mir jetz noch jmd sagn könnte, wie ich in die txt datei zahlen speichern und diese dann wieder auslesen kann, wär alles super...

schonmal danke im voraus

mfg
KeyBe

DeddyH 20. Jun 2008 19:39

Re: Speichern und Lesen von Daten
 
In welcher Form liegen die Zahlen denn vor? Hast Du eine TList, ein Array...?

mkinzler 20. Jun 2008 19:40

Re: Speichern und Lesen von Daten
 
Genauso wie auf den Bildschirm(Konsole). Mit WriteLn()/ReadLn()

KeyBe 20. Jun 2008 19:51

Re: Speichern und Lesen von Daten
 
naja...also das is so:
das programm is für mein gymnasium gedacht, ich soll was schreibn, womit die aktuelle schulumfrage ausgewertet werden kann...
mehrere menschen füllen also (gleichzeitig) den fragebogen aus, der in einer ersten form ist. in einer zweiten form sind dann die gesamtzahlen der jeweiligen antwort, also dass immer wenn eine bestimmte antwort angeklickt wurde, die dazugehörige variable um 1 steigt (integer quasi)...ich hab dann da also ne liste mit ca. 100 variablen/zahlen, die werd ich wahrscheinlich in jeweils einem labelfeld ausgeben...und die sollen dann quasi in die txt (möglichst noch mit jeweils ein paar wörtern dazu, so dass man beim öffnen der txt auch gleich das ergebnis erkennen kann und nicht extra im programm nachschaun muss, wie das ganze zu verstehen ist).

mfg
KeyBe

KeyBe 21. Jun 2008 20:51

Re: Speichern und Lesen von Daten
 
ok...also einfach mit writeln() in die txt schreiben ist ja kein problem, aber wie kann ich festlegen, in welche zeile der txt das ganze geschrieben wird, und vor allem: wie kann ich einen bestimmten teil einer zeile wieder auslesen?

danke im voraus
mfg
keybe

DeddyH 21. Jun 2008 21:08

Re: Speichern und Lesen von Daten
 
Ich bin nicht sicher, ob ich Dich richtig verstanden habe, aber schau Dir mal TIniFile an, da hast Du ganz andere Möglichkeiten als mit einer txt.

haentschman 21. Jun 2008 21:26

Re: Speichern und Lesen von Daten
 
Hallo...
Zitat:

mehrere menschen füllen also (gleichzeitig) den fragebogen aus, der in einer ersten form ist
...das riecht nach mehreren Computern :gruebel:
...Netzwerkzugriff auf eine TXT oder INI :gruebel:

- ich schmeiße da mal eine Datenbank in die Runde. Für diesen Zweck dürfte sogar eine Paradox Tabelle reichen.
- für jede Antwort einen Datensatz mit Datum, Uhrzeit, Antworttext (damit es eindeutig bleibt)
- mit SQL via select count where ANTWORTTEXT = 'blabla' die Antworttexte durchzählen lassen.

...nur so als Idee, bin halt DB Fetischist :mrgreen:

mkinzler 21. Jun 2008 21:31

Re: Speichern und Lesen von Daten
 
Zitat:

- ich schmeiße da mal eine Datenbank in die Runde. Für diesen Zweck dürfte sogar eine Paradox Tabelle reichen.
Lieber keine BDE

haentschman 21. Jun 2008 22:03

Re: Speichern und Lesen von Daten
 
...ja klar. :-D

- ich wollte nur damit ausdrücken, daß es nicht gleich Oracle oder MySQL sein muß... :mrgreen:
- das Projekt schätze ich eher kurzlebig sein, daher dieser Vergleich.
:warn: - eine kleine Desktop DB ist besser als Paradox und BDE.

:hi:

DeddyH 21. Jun 2008 22:05

Re: Speichern und Lesen von Daten
 
Zitat:

Zitat von haentschman
- eine kleine Desktop DB ist besser als Paradox und BDE.

:wiejetzt: Ich dachte immer, das ist genau das, was man gemeinhin mit "Desktop-DB" bezeichnet.

haentschman 21. Jun 2008 22:27

Re: Speichern und Lesen von Daten
 
...dann habe ich immer falsch gelesen :gruebel:
Zitat:

Also weg mit der BDE/Paradox und falles eine Desktopdatenbank nötig ist gibt es mit ADS Local Server, Absolut Database, ... genügent Alternativen.
...wenn ich das richtig interpretiere gibt es auch Desktopdatenbanken welche ohne BDE auskommen.

letztendlich bleibt es ein Wortspiel oder ? :-D

DeddyH 21. Jun 2008 22:31

Re: Speichern und Lesen von Daten
 
AFAIK bezeichnet man alle Einzelplatz-RDBMS als Desktop-DBs. Man kann sie zwar im Netzwerk nutzen, aber bei mehr als einer Handvoll Nutzer gleichzeitig bricht die Performance ein. Hier sollte man dann echte Client/Server-RDBMS einsetzen.

haentschman 21. Jun 2008 22:33

Re: Speichern und Lesen von Daten
 
...dem gibt es nichts hinzuzufügen :thumb:

KeyBe 22. Jun 2008 18:13

Re: Speichern und Lesen von Daten
 
ähm...erstmal danke an alle!

also ich hab leider keine ahnung von datenbanken, zumindest in verbindung mit delphi (ich weiß, dass das erbärmlich ist, aba ich werkel noch nicht so lange mit delphi rum).
deswegen hab ich eher nach einer lösung gesucht, bei der ich mit 'ner txt arbeiten kann...
gibt es mit readln/writeln nicht die möglichkeit aus bestimmten zeilen auszulesen bzw. in bestimmte zeilen zu schreiben (danach hatte ich eigentlich gesucht)? theoretisch muss in jede zeile auch nicht mehr als eine zahl, zusätzliche wörter müssen da fürs erste nicht rein.
(wenn es sogar noch die möglichkeit gibt, ohne große "umwege", aus bestimmten zeilen nur einzelne teile auszulesen, wäre ich über eine aufklärung darüber sehr erfreut!)

danke im voraus

mfg
keybe

Blackheart 22. Jun 2008 18:17

Re: Speichern und Lesen von Daten
 
Zitat:

Zitat von DeddyH
Ich bin nicht sicher, ob ich Dich richtig verstanden habe, aber schau Dir mal TIniFile an, da hast Du ganz andere Möglichkeiten als mit einer txt.

Schau dir mal das an
Ini Tutorial

KeyBe 22. Jun 2008 18:22

Re: Speichern und Lesen von Daten
 
danke...werd mal reinschaun...
kann man ini dateien wie txt dateien einfach mit nem doppelklick öffnen und so auf direktem wege den inhalt erfahren?

haentschman 22. Jun 2008 18:33

Re: Speichern und Lesen von Daten
 
Zitat:

ich weiß, dass das erbärmlich ist, aba ich werkel noch nicht so lange mit delphi rum
...wir haben alle mal angefangen. :wink:

Was ich mit der Datenbank meinte ist das Problem, welches du dir einhandelst, mit mehreren User auf eine TXT / INI lesen / schreiben. Da wäre eine Datenbank angebrachter.
Zitat:

mehrere menschen füllen also (gleichzeitig) den fragebogen aus, der in einer ersten form ist
:?: an mehreren Computern
:?: gleichzeitig an einem Computer :gruebel:

Bsp für ein Problem:
- User1 liest die INI -- Variable X aus INI hat Wert 1
- User2 liest die INI -- Variable X aus INI hat Wert 1
- User1 keuzt die Antwort an und erhöht X um 1 --- X=2 bei User1
- User2 keuzt die gleiche Antwort an und erhöht X um 1 --- X=2 bei User2
- User1 schreibt X in die INI
- User2 schreibt X in die INI

Ergebnis: X in der INI =2 obwohl die Antwort 3 mal gegeben wurde.

Mit einer Datenbank ist so etwas leichter auszuwerten. Du könntest auch dann leichter Deine Auswertungskriterien kombinieren.
Im Prinzip kann man so etwas auch mit TXT / INI lösen. Ich finde aber ungleich komplizierter bei der Auswertung.

Wenn Dein Termin nicht drängelt beschäftige Dich mal mit dem Thema Datenbank.

Threads findest du hier auch für Einsteiger genug.

:hi:

KeyBe 22. Jun 2008 19:13

Re: Speichern und Lesen von Daten
 
würd ich sehr gern, das thema interessiert mich schon ziemlich. aber leider fehlt mir die zeit dazu, hab nur noch eine woche :)

marabu 22. Jun 2008 19:17

Re: Speichern und Lesen von Daten
 
Hallo,

bevor du irgendetwas speichern kannst, musst du dir mal Gedanken machen wie deine Daten aussehen. Du hast es zwar nicht geschrieben, aber ich vermute, dass deine Umfrage vom Typ Single Choice ist: Mehrere mögliche Antworten werden vorgegeben und man kann nur eine auswählen. Das wird eine sehr spezielle Software, die für Freeform und Multiple Choice nicht verwendet werden kann, aber das nur am Rande.

Wie werden die Daten eingesammelt? Über ein einfaches Formular in einem Delphi-Programm? Warum schreibst du von gleichzeitigem Ausfüllen des Formulars? Willst du mehrere Instanzen deines Programms laufen lassen? Sollen die Daten an irgendeiner Stelle in Echtzeit ausgewertet werden? Wie verhinderst du, dass jemand mehr als einmal antwortet?

Da sind noch eine Menge weitere Fragen, über die du dir Gedanken machen musst, bevor du ein brauchbares Programm für den genannten Zweck erstellen kannst. Dabei ist deine Fähigkeit Delphi-Code zu schreiben die geringste Hürde.

Noch eines:

Zitat:

Zitat von DeddyH
AFAIK bezeichnet man alle Einzelplatz-RDBMS als Desktop-DBs. Man kann sie zwar im Netzwerk nutzen, aber bei mehr als einer Handvoll Nutzer gleichzeitig bricht die Performance ein. Hier sollte man dann echte Client/Server-RDBMS einsetzen.

Die Gleichsetzung von Einzelplatz-DB und Desktop-DB finde ich nicht so gut: Mehrplatzfähigkeit ist kein identifizierendes Merkmal einer Client-Server-Architektur. Wahrscheinlich jedes Client-Server-Datenbanksystem lässt sich im Single-User-Modus betreiben.

Das wesentliche Architekturmerkmal einer Desktop-Datenbank ist die Ansiedlung der Datenzugriffsschicht auf dem gleichen Rechner, auf dem auch die Anwendung ausgeführt wird, wobei die Zugriffsmethoden statisch oder dynamisch in die Anwendung selbst (monolithisch) eingebunden werden. Konkurrierende Zugriffe im Netzwerk müssen entweder über die Sperrmechanismen des jeweiligen Dateisystems (z.B. dBase) oder einen darauf aufsetzenden Sperrmechanismus (z.B. Paradox) gesteuert werden.

Bei der Client-Server-Architektur kommuniziert jede Anwendung über ein Netzwerkprotokoll mit der Verwaltungsinstanz und nur noch dieser Code wird dynamisch eingebunden. Durch die Zentralisierung der Verwaltungsfunktionen wird die bessere Skalierbarkeit erreicht. JFTR

Freundliche Grüße

KeyBe 22. Jun 2008 19:38

Re: Speichern und Lesen von Daten
 
naja...für mich steht momentan das abspeichern im mittelpunkt. die andernen probleme sind zwar auch wichtig, aber in dem fall eher weniger von bedeutung, da die umfrage bereits vor einigen wochen altmodisch mit stift und papier von allen schülern ausgefüllt wurde. eigentlich war geplant, dass dann am 30.6. einige schüler (die lehrer sind anscheinend zu faul) das ganze durch zählen auswerten dürfen. deswegen möchte ich ein programm schreiben, bei dem die schüler ganz einfach das ergebnis jedes fargebogenns eintippen (geht hoffentlich schneller und fehler durch verzählen etc. sind unwahrscheinlicher), ihn also "digitalisieren". manipulation schließ ich dabei eher aus.
dabei kann man ja auch erstmal durch absprache vermeiden, dass mehrere schüler gleichzeitig ihre daten speichern, da ich vorhabe, das ganze so zu gestalten, dass erst jeder der glücklichen schüler all seine ihm zugeteilten zettel abarbeitet und sein gesamtergebnis dann erst in die txt/ini, ... speichert.
es wäre also erstmal sowas wie ne beta. um ne version, die bei ner umfrage richtig und fehlerfrei benutzt werden könnte, würde ich mich dann später kümmern.

Chemiker 22. Jun 2008 19:59

Re: Speichern und Lesen von Daten
 
Hallo KeyBe,

wenn das so ist, kannst Du dir ja mal dieses Tut. ansehen.

Beispiel Datenbank

Dort wird erklärt wie man eine Datenbank mit Delphi – Bordmittel anlegt. Ist relativ schnell erstellt und vermittelt auch ein wenig Grundlagen für eine spätere richtige Datenbank. Das fertige Programm einschließlich der Daten können auf ein Stick gespeichert werden.

Bis bald Chemiker

NormanNG 22. Jun 2008 20:25

Re: Speichern und Lesen von Daten
 
Hi,

Zitat:

dabei kann man ja auch erstmal durch absprache vermeiden, dass mehrere schüler gleichzeitig ihre daten speichern, da ich vorhabe, das ganze so zu gestalten, dass erst jeder der glücklichen schüler all seine ihm zugeteilten zettel abarbeitet und sein gesamtergebnis dann erst in die txt/ini, ... speichert.
Dazu kannst du auch an jedem AP die Daten in eine "eigene" INI speichern lassen und diese dann erst am Ende/bei der Auswertung zusammenfassen.

KeyBe 23. Jun 2008 19:51

Re: Speichern und Lesen von Daten
 
thanks @ all

@ NormanNG
ja, klar, aba ich wolltes gern in eine einzelne machen, sonst kann ichs ja auch gleich in einer zweiten form abspeichern und nich extra ne ini-datei anlegen


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:17 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