Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Telefonbuch-Schuleprojekt und wir sind hilflos (https://www.delphipraxis.net/108248-telefonbuch-schuleprojekt-und-wir-sind-hilflos.html)

maker 9. Feb 2008 22:28


Telefonbuch-Schuleprojekt und wir sind hilflos
 
Hallo Leute ich hab ein riesengroßes problem, naja jedenfalls für mich riesengroß.
Und zwar behandeln wir im Informatikunterricht zur Zeit Delphi und wurden da mehr oder weniger ins kalte Wasser geworfen. Wir haben Gruppen gegründet und jede muss ein anderes Projekt entwerfen.
Meine Gruppe (3 Personen) muss ein Telefonbuch erstellen. so weit so gut. Wir haben uns durch verschiedene Foren geklickt, infos gesammelt und sogar teilweise quelltexte so übernommen, aber nichts will klappen. Nun hier meine Frage:
Wir haben uns das in etwa so vorgestellt, dass der Benutzer die Eingaben in ein stringgrid tätigt und diese Daten dann in einer Datei speichern kann. Es sollte möglich sein Ort und Name der Datei zu wählen und diese dann auch später wieder laden zu können. Es sollte auch möglich sein, dass der benutzer nicht alle Felder der stringgrid ausfüllt die nebeneinander sind und dass trotzdem wieder alles richtig geladen wird.
So das ist die Aufgabe und wenn wir ehrlich sind haben wir keine Ahnung wie das machbar ist und ob überhaupt.
Kann uns hier vielleicht jemand helfen? ihr seid sozusagen unsere letzte Hoffnung

mfg. maker

Die Muhkuh 9. Feb 2008 22:32

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Schönen Guten Abend,

erstmal herzlich Willkommen in der Delphi-PRAXiS. :dp:

Um es gleich vorweg zu sagen: Eure Hausaufgaben wird hier keiner machen. ;)

Wenn Du / Ihr uns aber erzählt, woran es scheitert, was ihr versucht habt etc. pp. helfen wir gerne.

maker 9. Feb 2008 22:38

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
DAnke für das Willkommen.
natürlich wird hier keiner unsere Hausaufgaben amchen das bringt auch nix-will das abi ja auch schaffen^^
Ja was wir versucht haben hmm gute frage, wir haben versucht im Internet ne erklärung für sowas zu finden weil wie gesagt, wir ins kalte Wasser geworfen wurden und vorher nie mmit Delphi gearbeitet haben.
Wir kennen einfach die Befehle nicht de zur Umsetzung dienlich sind bzw. das einzige was ich mit delphi erstellen kann ist nen Programm zur Addition/Subtraktion/Division/Multiplikation mehrere Zahlen

mfg. maker

fLaSh11 9. Feb 2008 22:39

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Also erstmal auch ein Hallo von mir.

:arrow: Bist du dir sicher, dass es sich um Delphi für .NET handelt?
:arrow: Mach dich mal mit Datenbanken vertraut. Dazu gibts auch massig Tutorials hier in der DP oder auf dsdt.info. Damit müsste sich das relativ einfach realisieren lassen.
:arrow: Ohne Datenbanken geht's natürlich auch. Mach dich hier mit Datenspeicherung vertraut. Ini-Files wäre hier das einfachste. Schöner fände ich aber XML.

MfG
Steffen

Die Muhkuh 9. Feb 2008 22:45

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Hi,

ins kalte Wasser geworfen glaube ich Dir jetzt nicht so ganz. Ihr beschäftigt Euch 100% mit Delphi im Unterricht und Eurer Lehrer wird Euch sicherlich keine Aufgabe stellen, die Ihr nicht schaffen könnt.

Ich kann Euch daher wärmstens die Tutorials auf www.delphi-treff.de empfehlen. Dort findet Ihr Einsteiger-Tutorials, die Euch sicherlich noch mal die Grundlagen beibringen.

maker 9. Feb 2008 22:49

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Ja das mit dem ins kalte Wasser geworfen worden glauben die wenigsten aber es ist leider so.
Er hat sich selber erst kürzlich mit delphi auseinander gesetzt, dies hat er vor uns zugegeben und sich dafür auch entschuldigt. DAs ist ja auch völlig ok aber...nunja möchte da jetzt nicht zu weit ausholen, ist ja auch nicht zweck des Threads.
Also erstmal danke für die tipps werde ma schaun was sich so schaffen lässt mit den Seiten

mfg. maker

Noobinator 9. Feb 2008 22:55

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
also ich würde das wie folgt machen:

Ein Array of Record, wobei im Record alle Werte wie name, Telefonummer usw stehen.

Für leere Felder würde ich ein Dummy - Element benutzen.

Dann zum Speichern einfach eine Textdatei benutzen, und Die Werte Zeilenweise Abspeichern.

BSP in der Textdatei:

Zitat:

Max,Mustermann,Telefonnummer
Michaela,Mustermann,Telefonummer
Hans Dieter,Müller,Dummyelement
benötigte befehle:
  • Pos
  • assignfile
  • readln(reset)
  • writeln(rewrite)
  • IF Then Else
  • for to do

Denke das ist die einfachste Lösung

DeddyH 9. Feb 2008 22:57

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Noch ein Tipp: schau Dir mal Records und typisierte Dateien an, das dürfte einfacher sein, als gleich mit einer DB aufzuwarten.

maker 9. Feb 2008 23:08

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Also hihi sry das kichern konnt ich mir nicht verkneifen.
auf Delphi treff wird mein Problem prinzipiell wunderbar und verstädnlich in einfach schritten behandelt. Nun kommt aber ein problem mit dem ich so gar nicht gerechnet hätte. Ich benötige zur Erstellung des Programms die Datenbankoberfläche die sich unter Tools befinden soll. Ich weiss nicht wies bei euch aussieht, aber bei mir ist da nichts derartiges zu finden, was kann ich da machen?

mfg. maker

Die Muhkuh 9. Feb 2008 23:08

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Welche Delphi-Version hast Du denn?

maker 9. Feb 2008 23:11

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Ich habe hier gerade Delphie 7

mfg. maker

Die Muhkuh 9. Feb 2008 23:13

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Personal?

maker 9. Feb 2008 23:14

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Oh ja sry Personal hatt ich ganz vergessen
mfg. maker

DeddyH 9. Feb 2008 23:15

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Könnt Ihr das Thema DB mal ad acta legen? Ich finde, das ist hier vollkommen überdimensioniert (und zwar in allen Belangen).

[edit] Mein Ottografie ( :) ) ist nach einigen Bierchen nicht mehr die Sicherste :oops: [/edit]

Die Muhkuh 9. Feb 2008 23:17

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Dann hast Du Pech gehabt. Die Personal bietet keine Unterstützung für Datenbanken.

Schau Dir mal Turbo Delphi Explorer an, die ist kostenlos und bietet auch Unterstützung für Datenbanken an. Jedoch kannst Du keine Drittkomponenten installieren, aber Du hast schon über 200 dabei, die reichen Dicke.

www.turboexplorer.com

Jedoch solltest Du, wie DeddyH schon erwähnte, nicht gleich auf Datenbanken aufsetzen, typisierte Dateien bieten sich hier "genau so gut" an.

[edit] Detlef, sauf nicht so viel :tongue: [/edit]

maker 9. Feb 2008 23:21

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Aber wieso ad acta? Das Beispiel was ich gefunden habe ist ja nunmal mit DB und verständlicher bekomm ich es so schnell sicher nicht erklärt.
Zwischendurch übrigens nochma danke für die liebe und schnelle Hilfe und das zu so unchristlicher zeit. Ja ich weiss DB`s sind net allzu einfach aber..nunja wie soll ich sagen. Es ist ne gute Lösung wie ich finde. Also na gut ich überlegt mir das ganze ma und schlaf drüber ma schaun was ich da morgen draus machen kann.
Jendenfalls ganz großes dankeschön an euch alle

mfg. maker

DeddyH 9. Feb 2008 23:23

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Ob Dein Lehrer damit einverstanden ist, wenn Ihr gleich mit Datenbanken loslegt, wage ich zu bezweifeln.

omata 10. Feb 2008 01:50

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ein Vorschlag...

Dani 10. Feb 2008 04:55

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Die Muhkuh
Um es gleich vorweg zu sagen: Eure Hausaufgaben wird hier keiner schon irgend jemand aus reiner Langeweile machen. ;)


SirTwist 10. Feb 2008 11:38

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Das ist das Problem, was ich hier (und in anderen Foren) immer wieder sehe.

Viele Anfänger, machen sich nicht mal ansatzweise die Mühe, über ihr Problem nachzudenken, es zu analysieren und zu überlegen, was sie überhaupt machen müssen. Es gibt ja ein Forum, wo man einfach mal nachfragen kann und irgendjemand programmiert das dann schon fertig. Klar, für die Hausaufgaben mag das reichen, aber so jemanden will ich dann bitte nicht als Praktikanten bei mir im Büro sitzen haben :-(

Was ist so schwer daran?

Ein Telefonbuch sollte man aus jedem Handy und auch aus vielen anderen Telefonen kennen. Da gibt es mehrere Einträge, die im einfachsten Fall jeweils aus Name und Nummer bestehen, mittlerweile bei vielen Handies aber auch aus viel viel mehr Einzeldaten.

Punkt 1: Ich brauche irgend etwas, um einen zusammengehörigen Satz von Daten (Name, Nummer, Schmachtfaktor) abzuspeichern. Das nennen wir mal einen Datensatz.

Punkt 2: Ich werde mehrere solcher Datensätze abspeichern müssen. Hier kann man sich überlegen, ob man eine feste Anzahl vorgeben soll (ja, damals gabs Handies mit genau 20 Speicherplätzen ;-) oder eine variable Anzahl erlauben möchte.

Weiter gehts: Was will ich mit meinen Daten denn überhaupt machen?

1) Ich will Telefonnummern (Datensätze) eingeben
2) Ich will Telefonnummern (Datensätze) angezeigt bekommen
3) Ich will nach Telefonnummern suchen können (z.B. anhand des Namens)
4) Ich will die Liste der Telefonnummern abspeichern können, so dass ich sie beim nächsten Programmstart wieder einlesen kann

So, nu hab ich schonmal eine Reihe von Anforderungen.

Gehen wir zurück zu Punkt 1: Ich brauch "irgendwas", um einen Datensatz zusammenhalten zu können. Das einfachste Konstrukt, was Delphi uns da bietet, ist der Record:
Delphi-Quellcode:
TEintrag = record
  Name:  String;
  Nummer: String;
end;
Wir werden später sehen, dass der einfachste Weg nicht immer der beste ist.

Um mehrere Einträge innerhalb des Programms verwalten zu können, brauche ich "irgendwas", um mehrere Records zusammenzufassen. Das einfachste Konstrukt, was Delphi uns da bietet, ist das Array:
Delphi-Quellcode:
TTelefonbuch = array[1..20] of TEintrag;
Wir werden später sehen, ....

Jetzt habe ich hier die Variante mit fester Anzahl von Einträgen. Unschön. Es gibt ein sogenanntes variables Array, dessen Länge ich später (also während das Programm läuft) auch noch verändern kann:
Delphi-Quellcode:
type
  TTelefonbuch = array of TEintrag;
var
  Telefonbuch: TTelefonbuch;
begin
  SetLength(Telefonbuch, 20);
...
Leider ist dieses Konstrukt sehr unschön, wenn man viele Einträge hat und sie sich Anzahl immer mal wieder verändert: Delphi muss dann immer einen ganz neuen Speicherbereich anfordern (Ja, es gibt Ausnahmefälle) und dann alles umkopieren.

Was gibts denn noch in der Trickkiste? Eine Liste! Die ist variabel in der Anzahl Einträge, ich kann die Einträge relativ einfach umsortieren, klingt perfekt. Aber in einer Liste speicher ich keine Records, sondern Objekte. Was ist der unterschied? Nun, praktisch gesprochen ist ein Objekt fast das gleiche wie ein Record, ich kann nur noch ein bißchen mehr damit machen:

Delphi-Quellcode:
type
  TEintrag = class(TObject)
    Name:  String;
    Nummer: String;
  end;
  TTelefonbuch = TObjectList;
var
  Telefonbuch: TTelefonbuch;

begin
  Telefonbuch := TTelefonbuch.Create(True);
...
(Exkurs TObjectList: Es gibt auch eine TList. Die hier verwendete TObjectList hat den Vorteil, dass man sich um das Aufräumen des Speichers nicht kümmern muss. Man sollte also immer die TObjectList anstatt der TList benutzen. Hierfür muss man in die oberste "uses"-Liste die Unit "contnrs" aufnehmen.)

So, nu sind wir mit unseren Überlegungen doch schon ein ganzes Stück vorran gekommen. Den Rest jetzt noch eben fix selber zu machen, dürfte trivial sein, nicht wahr? Gerade wenn ihr in einer Gruppe zusammen arbeitet, dann kann man doch mal zusammen sowas wie ein Brainstorming machen und die Ideen zusammentragen.

So, und wenn dann noch Implementierungsfragen sind ("hm, ich hab hier eine Datenstruktur, die ich in einer TObjectList abspeicher. Wie kann ich die möglichst einfach auf Festplatte speichern und wieder einlesen"), dann kann man immer noch im Forum fragen und dann kann man die (wahrscheinlich zahlreichen) Antworten auch wirklich verstehen.

Sorry. Musste mal raus.

Gruß,
SirTwist

Phoenix 10. Feb 2008 11:42

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Das bedingt aber, das man sowas wie Records, Arrays etc. in Delphi schon kennt.
Prinzipiell geb ich Dir ja recht, aber wenn man wirklich von einem Lehrer eine solche Aufgabe bekommt, der selber grad erst mit Delphi anfängt (eines der größten Probleme bei uns in den Schulen), dann kann man solches Basis-Knowhow leider noch nicht vorrausetzen.

Rakshasa 10. Feb 2008 11:55

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Verstehe nicht ganz, weshalb hier gleich Datenbanklösungen vorgeschalgen werden?
Wenn der TE wirklich noch nichts von Delphi weiß (was ich auch irgendwie bezweifle, denn wie soll er sonst ein Projekt programmieren?) kann er es doch komplett vergessen, irgendwas zu programmieren, das über ein Showmessage('Hello World!'); geht...

Mein Vorschlag:

- Records
- TIniFile

Dürfte wohl das Einfachste sein, oder??

Nuclear-Ping 10. Feb 2008 12:45

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Zur Not in die Barrikaden gehen und streiken. Wenn euer Lehrer wirklich kein Schimmer von Delphi hat, darf er das dann überhaupt? Ggf. mal beim Rektor nachfragen. :mrgreen:

maker 10. Feb 2008 14:11

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Also kurz zur Klärung: Sich beim Schulleiter zu beschweren bringt bei uns absolut gar nichts. Ja ich weiss jetz denkt der ein oder andere sicherlich: Hä sonn quatsch ihr habts anscheinend nur noch nicht versucht....
Doch haben wir, aber unser Schulleiter ist...sehr entscheidungsunfreudig. Sicherlich es gibt viele Möglichkeiten, aber von denen amchen wir aus gutem Grund nicht gebrauch, denn der Lehrer kann ja wenn mans genau nimmt nichts dafür, dass er nichts großes mit delphi anfangen kann. Zudem ein beispiel: So liebe Schüler ihr habt eine Aufgabe ich habe heute keinerlei Zeit für euch ich muss noch dieses oder jenes erledigen. Ja gut haben wir verstädnis für(teilweise) und arbeiten halt so gut es geht selbstständig.
Er selbst kann ganz sicher keines dieser Projekte selbst erledigen, aber der berühmte Satz aller Lehrer unserer Schule zu sowas: Ich brauch das auch nicht können, ich habe mein abitur schon ihr wollt es haben also strengt euch an.
Was soll man da als Schüler machen? Wir wollen keinen lehrer um seine Arbeit bringen, denn ansonsten ist er ja eigentlich Kompetent.
Ich bin keinem böse der das nicht verteht und ich hoffe ihr seid mir auch nicht böse wegen diesem thread, allerdings können wir wirklich nichts großartiges mit Delphi anfangen-es fehlen die Vorraussetzungen.
Das mit den fertigen Programmen ist sehr nett gewesen und bringt uns sicherlich vorran, aber ein Endresultat ist das für uns nicht, wir wollen es ja auch verstehen und wir müssen es, aus der aufgabe herraus, auch den anderen erklären können, welche stück quelltext für was gut ist.


mfg. maker

Noobinator 10. Feb 2008 15:10

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Das mit dem Lehrer muss man aber auch verstehen.

Jedenfalls hier bei uns in Thüringen gibt es erst seit letztem Jahr Delphi im Leerplan, davor nur Oberon, und das ist ja schon ein gewaltiger Unterschied.

Lehrer müssen das ganze ja auch erstmal lernen.

Christian Seehase 10. Feb 2008 15:12

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Moin Zusammen,

es spricht ja nichts dagegen, sich über Schulpolitik auszutauschen, aber dann bitte in "Klatsch & Tratsch".
Danke.

DeddyH 10. Feb 2008 16:12

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Vielleicht sollte man erstmal die Aufgabenstellung konkretisieren: was soll das Programm können und was nicht? Wenn ich von Tuten und Blasen keine Ahnung habe, suche ich normalerweise erstmal nach einfachen, d.h. für mich nachvollziehbaren Lösungen. In diesem Fall könnte man z.B. eine einfache Textdatei verwenden, auch wenn einige hier die Nase rümpfen werden. Solange keine Sortierung o.ä. ins Spiel kommt, ist diese mittels einer TStringList IMO recht einfach zu handhaben (LoadFromFile, SaveToFile etwa werden ja gleich "frei Haus" mitgeliefert). Ein kleines minimales Beispiel:
Delphi-Quellcode:
sList := TStringList.Create;
try
  sList.LoadFromFile(Dateiname);
  for i := 0 to sList.Count - 1 do
    case i mod 3 of
      0: Verarbeite_Name(sList[i]);     //Name
      1: Verarbeite_Vorname(sList[i]);  //Vorname
      2: Verarbeite_TelefonNr(sList[i]); //Telefon
    end;
finally
  sList.Free;
end;
Nun muss man sich nur noch Gedanken über die Darstellung machen (ListView, StringGrid, ListBox). Versucht es mal auf diesem Wege, wenn Ihr nicht weiterkommt, stehen wir gerne zur Verfügung.

maker 14. Feb 2008 18:04

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Also ganz großes Danke an alle die hier geschrieben und geholfen haben.
Wir haben jetzt ein eigenes Projekt sozusagen geschrieben.

Leider komm ichz erst am Dienstag wieder in info raum rein sodass ich euch den Quelltext dann zur Verfügung stellen werde, wir haben nämlich noch das Problem des Ausdruckens und des Sortierens von A-Z bzw Z-A. ansonsten hat das Programm die Funktion des: Eingebens/Speicherns/Ladens von Telefondaten(Name/Vorname/Stadt/Straße/Postleitzahl/Telefonnmr/Mobilnummer) Suchen innerhalb der Liste, Löschen der gesammten Liste oder ändern einzelner Einträge/Löschen einzelner einträge.

wie gesagt nur das sortieren wissen wir nicht wie wir es hinbekommen sollen.

mfg. maker

DeddyH 14. Feb 2008 18:19

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Dazu kann man nur dann Genaueres sagen, wenn man weiß, in welcher Form die Daten vorliegen (Record, Strings, etc.).

maker 14. Feb 2008 18:24

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Jaja das weiss ich :) wollt nur ma ne zwischeninfo geben damit ich hier nich undankbar erscheine.

mfg. maker

DeddyH 14. Feb 2008 18:32

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Das ist ja in Ordnung. Zur Sortierung würde ich Euch den Bubblesort empfehlen, der ist zwar langsam, aber einfach nachzuvollziehen. Tipp: Sortieralgos sind bei Wikipedia recht detailliert beschrieben.

rnaish1993 22. Mär 2010 08:16

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
blablabla danke für´s programm kann ich gebrauchen^^

Deep-Sea 22. Mär 2010 08:35

Re: Telefonbuch-Schuleprojekt und wir sind hilflos
 
Zitat:

Zitat von DeddyH
Das ist ja in Ordnung. Zur Sortierung würde ich Euch den Bubblesort empfehlen, der ist zwar langsam, aber einfach nachzuvollziehen. Tipp: Sortieralgos sind bei Wikipedia recht detailliert beschrieben.

Also ich persönlich finde Selectionsort weitaus einfacher für "Neulinge" zu verstehen als Bubblesort.
Und Insertionsort ist nicht komplizierter vom Code her als Bubblesort, aber im Durchschnitt doppelt so schnell.
:-D

[edit]Achya: die "Standard"-Bubblesort-Implementation benötigt bei bereits sortieren Listen ebenfalls n² Durchläufe, während Insertionsort optimal mit n arbeitet.[/edit]

(*Wieder mal meinen Senf dazugegeben und nun die klappe halt*)


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