Telefonbuch
Hi Leute!!
Mein Info-Lehrer meinte, ich soll mich an euch wenden. Und zwar geht es darum, dass wir uns ein Programm erarbeiten sollen, dass eine Art Telefonbuch darstellt, mit den Funktionen:Hinzufügen, Suchen und Löschen. Dafür haben wir jetzt mit SaveToFile gearbeitet. Jetzt ergibt sich das PB, dass der mir immer wieder die alten Einträge löscht, wenn ich Hinzufügen drücke, das kann ja eigentlich nicht sein :wiejetzt: aber naja, vielleicht habt ihr ja nen Tipp. Und das andere PB ist die Such-Funktion, wir hatten das noch nie, und wie gesagt, meinte mein Lehrer, wir sollen mal in den Foren herum fragen, ihr seid nett. Ja das hoff ich doch :wink: Naja, jedenfalls zähle ich auf euch. LG Susi |
Re: Telefonbuch
Hallo,
an uns kann man sich immer wenden, nur bräuchten wir dazu etwas mehr Informationen. Wie schaut dein bisheriger Ansatz aus? Ist ein Telefoneintrag in einem Objekt abgelegt? Wie verwaltest du die Liste der Einträge? Welche SaveToFile Funktion? Ciao Chris |
Re: Telefonbuch
Ich bin auch der Meinung, dass das etwas vage Informationen sind. Die Möglichkeiten, die mir aus der hohlen Hand einfallen, reichen von einer Textdatei über TIniFile über typisierte Dateien bis hin zur Datenbank. Aber ohne Euren Kenntnisstand zu kennen kann man da keine konkreten Ansätze geben.
|
Re: Telefonbuch
okay, hier ist mal mein Quelltext,ich denke mal, es ist ersichtlich, was passiert:
Es ist erstmal ein Ansatz, ich konnte mich auch noch nicht intensiver beschäftigen, weil ich 2 wochen total krank war, jetzt soll ich das aber sonntag abgeben :(
Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
begin memo1.lines.clear; edit1.text:=''; edit2.text:=''; edit3.Text:=''; edit4.Text:=''; edit5.Text:=''; edit6.Text:=''; end; procedure TForm1.Button2Click(Sender: TObject); begin edit1.visible:=true; edit2.visible:=true; edit3.visible:=true; label4.visible:=true; label6.visible:=true; label7.visible:=true; button8.visible:=true; end; procedure TForm1.FormCreate(Sender: TObject); begin edit1.visible:=false; edit2.visible:=false; edit3.visible:=false; edit4.visible:=false; edit5.visible:=false; edit6.visible:=false; label4.visible:=false; label6.visible:=false; label7.visible:=false; label2.visible:=false; label5.visible:=false; label3.visible:=false; button8.visible:=false; button9.visible:=false; button10.visible:=false; button11.visible:=false; end; procedure TForm1.Button3Click(Sender: TObject); begin label2.visible:=true; edit4.visible:=true; button9.visible:=true; edit1.visible:=false; edit2.visible:=false; edit3.visible:=false; label4.visible:=false; label6.visible:=false; label7.visible:=false; button8.visible:=false; end; procedure TForm1.Button4Click(Sender: TObject); begin label5.visible:=true; edit5.visible:=true; button10.visible:=true; label2.visible:=false; edit4.visible:=false; button9.visible:=false; edit1.visible:=false; edit2.visible:=false; edit3.visible:=false; label4.visible:=false; label6.visible:=false; label7.visible:=false; button8.visible:=false; end; procedure TForm1.Button5Click(Sender: TObject); begin label3.visible:=true; edit6.visible:=true; button11.visible:=true; label5.visible:=false; edit5.visible:=false; button10.visible:=false; label2.visible:=false; edit4.visible:=false; button9.visible:=false; edit1.visible:=false; edit2.visible:=false; edit3.visible:=false; label4.visible:=false; label6.visible:=false; label7.visible:=false; button8.visible:=false; end; procedure TForm1.Button6Click(Sender: TObject); begin close; end; procedure TForm1.Button1Click(Sender: TObject); var h: string; begin h:='h:\Telefonbuch.txt'; memo1.lines.loadfromfile(h); end; procedure TForm1.Button8Click(Sender: TObject); var h: string; begin h:='h:\Telefonbuch.txt'; edit1.text.SaveToFile(h); end; |
Re: Telefonbuch
Du lädst in ein Memo, speicherst aber nur ein Edit ab. Und viel ist das ja noch nicht ;)
|
Re: Telefonbuch
Zitat:
- Habt ihr eine bestimmte Vorgabe, wie die Datenstruktur aussehen soll? z.B. ne Pointer-Kette oder n Array oder sowas? |
Re: Telefonbuch
ja ich weiß ja...habe das Programm erst heute wieder zugeschickt bekommen...warum auch immer erst heute...hatte schon vor ner woche die mail an meinen lehrer geschickt aber seis drum...
ich finde auch irgendwie jetzt keinen ansatz mehr :( in der txt sind name & nummer |
Re: Telefonbuch
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo und Willkommen in der DP. :dp:
mit welcher Art Daten (SaveToFile) arbeitet Ihr (Textfile, array) ? im Anhang mal ein Beispiel aus den Delphi-Demos zur Verwaltung einer Adressdatenbank mit Hilfe eines arrays - lässt sich leicht in ein Telefonbuch ableiten. |
Re: Telefonbuch
Stell mal einen Beispieldatensatz hier rein.
|
Re: Telefonbuch
momentchen, soll ich mal n foto von dem aussehen des programms reinstellen??
ist dann vielleicht besser von wegen vorstellung und so... |
Re: Telefonbuch
N Foto ist okay, aber die TXT Datei wäre besser und dazu vielleicht noch die Frage, ob ihr die Aufgabe habt, das Telefonbuch auf eine bestimmte Art und Weise zu programmieren...
Also du könntest z.B. ein Record machen:
Delphi-Quellcode:
Dann nimmste dir ein Array vom Typ TTelefonbucheintrag und liest die Textdatei darin ein...
TTelefonbucheintrag= record of
Vor_und_Zuname: string; Telefonnummer:string; end;
Delphi-Quellcode:
usw...
var Telefonbuch: array of TTelefonbucheintrag
|
Re: Telefonbuch
Ich denke mir, das ginge auch mit TStringlist (ich hab da so einen Verdacht).
|
Re: Telefonbuch
Liste der Anhänge anzeigen (Anzahl: 1)
http://i35.tinypic.com/21n19pc.jpg
okay, so sieht das ganze aus....wir haben keinerlei vorgaben, es sind die funktionen nötig, die auf dem bild zu sehen sind und arrays sollen wir möglichst nicht verwenden.... |
Re: Telefonbuch
Und nun noch einen Beispieldatensatz oder gleich die Textdatei.
|
Re: Telefonbuch
Bildschirmfotos macht man übrigens mit "Druck" bzw. "PrintScreen" bzw. Alt+Druck für ein einzelnes Fenster...die TXT Datei fehlt immer noch :)
Zitat:
|
Re: Telefonbuch
Liste der Anhänge anzeigen (Anzahl: 1)
ja hier die exe
sry, ich wusste das mal, bin heut aber bissl überfordert mit allem :shock: |
Re: Telefonbuch
Ich meinte, wie soll die Textdatei denn aussehen? Oder steht Euch das frei?
|
Re: Telefonbuch
jaja, steht uns alles frei, sollte nur verständlich sein :)
|
Re: Telefonbuch
Also ginge auch so etwas:
Code:
Das könnte man dann in einer TStringlist verwalten (ist zwar nicht der Weisheit letzter Schluss, aber dafür recht einfach).
Karl-Heinz Lockensturz;01234/567890
|
Re: Telefonbuch
ja genau
|
Re: Telefonbuch
Nun, dann bilde doch einfach einen String, der den Namen, den Vornamen sowie sämtliche Telefonnummern durch ein definiertes Zeichen getrennt enthält. Das Ganze kannst Du dann in einer TStringlist bzw. TStrings(die Lines des Memos) verwalten. Ein Beispiel:
Code:
Dieser Datensatz entspricht dann einer Zeile Deiner Datei. Du kannst ihn anhand des Trennzeichens dann wieder in seine einzelnen Bestandteile zerlegen (mit Stringfunktionen wie Copy, Delete, Pos, PosEx etc. oder mit TStringlist.Delimiter/DelimitedText usw.). Sortieren geht damit auch(TStringlist.Sorted). Ich denke, als Ansatz soll das zunächst genügen.
//Originaldatensatz
Müller;Klaus-Bärbel;01234/12345 //eine Nummer dazu Müller;Klaus-Bärbel;01234/12345;02345/23456 |
Re: Telefonbuch
ja als Ansatz ist das okay, aber ich habe halt das Problem, dass ich nicht weiß, wie ich das einbinde, so gut bin ich nicht, mache das echt noch nicht lange...
|
Re: Telefonbuch
Zitat:
|
Re: Telefonbuch
Hast Du Dir die genannten Funktionen und Methoden denn schon einmal in der Delphi-Hilfe angeschaut?
|
Re: Telefonbuch
könnte ich machen, aber dann bin ich 4 stunden mit übersetzen beschäftigt..
|
Re: Telefonbuch
So viele waren das ja nun auch wieder nicht. Wir helfen ja gern, aber von Dir muss auch etwas kommen. Versuch es erst einmal und wenn Du nicht weiterkommst, meldest Du Dich einfach, OK?
|
Re: Telefonbuch
ich finde nicht mal einen Ansatz >.<
man ihr wart doch auch mal anfänger :cry: |
Re: Telefonbuch
Sicher waren wir das und haben uns als solche auch durchkämpfen müssen. Nochmal der Datensatz von oben:
Code:
Da sind 2 Trennzeichen(";") drin. Alles bis zum ersten Zeichen ist der Name, danach bis zum 2. Trennzeichen der Vorname, dahinter die Telefonnummer. Das musst Du nur noch zerlegen (die DP-Suche hilft dabei sicherlich auch weiter).
Müller;Klaus-Bärbel;01234/12345
|
Re: Telefonbuch
Okay, einen Ansatz. (wobei ich hier eine leicht andere Variante verfolge als DaddyH, sry)
Du deklarierst dir unter Private eine Variable:
Delphi-Quellcode:
Wenn dein Programm startet, musst du in der FormCreate Procedure die StringList ersteinmal "erstellen":
type
TForm1 = class(TForm) private { Private-Deklarationen } Telefonbuch:Tstringlist; public { Public-Deklarationen } end;
Delphi-Quellcode:
Dann brauchst du eine Procedure, um Einträge in dein Telefonbuch (in die Stringlist) einzufügen:
procedure TForm1.FormCreate(Sender: TObject);
begin Telefonbuch:=TStringList.create; end;
Delphi-Quellcode:
Jedes Mal, wenn du EinTelefonbuch.Add aufrufst, wird ein weiterer Eintrag in die StringList geschrieben.
procedure TForm1.Hinzufügen_Zu_Telefonbuch(EinName:String;EineTelefonnummer:string);
begin EinTelefonbuch.Add(EinName); EinTelefonbuch.Add(EineTelefonnummer); end; D.h. ein Beispiel: Am Anfang ist deine StringList leer. Jetzt rufst du folgende Procedure auf: Hinzufügen_Zu_Telefonbuch('Hans Meiser','0190-99999'); Jetzt steht in der StringList: 0.: Hans Meiser 1.: 0290-99999 Meine Frage an dich: Man kann mit Eckigen Klammern auf die einzelnen Einträge der Stringlist zugreifen: EinTelefonbuch[0] ist in unserem Fall jetzt = "Hans Meiser". Kannst du eine FUnktion basteln, die aus dem Telefonbuch nun wieder Name und Telefonnummer ausließt? Also, wenn ich dir sage: Suche mir bitte zur zweiten Person im Telefonbuch Namen und Telefonnummer... wie könnte das gehen? |
Re: Telefonbuch
Und mehrere Telefonnummern hängst Du dann wie an?
P.S.: DeddyH bitte ;) |
Re: Telefonbuch
Zitat:
100x Sorry wegen dem Fehler im Namen!!! :angel: |
Re: Telefonbuch
Auf dem Screenie steht was von "weitere Nummer hinzufügen" oder so ähnlich.
[edit] To err is human, to forgive is divine. You erred, I forgive you :zwinker: [/edit] |
Re: Telefonbuch
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
//edit: Thank you very much...now lets see, what he will do with this information... |
Re: Telefonbuch
okay, jetzt bin ich richtig verwirrt, zu viele Antworten....sorry....ich weiß, dass ich nichts kann und fühle mich bestätigt....danke
|
Re: Telefonbuch
Das hat ja niemand gesagt, was verstehst Du denn an den genannten Ansätzen nicht?
|
Re: Telefonbuch
ich weiß nicht wie ich sie einbinden soll, bzw wo, ich bin durcheinander
|
Re: Telefonbuch
Ich schreib dir gerade ein bisschen Sourcecode in dein Projekt...aber nur ein bisschen...
|
Re: Telefonbuch
hmmm...danke...vielleicht hilfts mir ja mal auf die sprünge :pale:
|
Re: Telefonbuch
Sei Dir zunächst einmal klar darüber, dass es einen Teil des Programms gibt, den man sehen kann (die Edits z.B.) und einen, den man nicht sieht (die Liste der Telefonnummern). Nehmen wir einmal an, die bereits erstellte Datei sähe so aus:
Code:
Diese Datei lädst Du mit LoadFromFile in eine TStringlist. Nun sagen wir: "zeig uns die erste Zeile".
A;B;1
C;D;2 E;F;3 G;H;4 Das bedeutet, dass der erste Datensatz (die erste Zeile) so dargestellt werden soll: - ins Edit für den Namen das A - ins Edit für den Vornamen das B - ins Edit für die Nummer die 1 Zweckmäßigerweise merkst Du Dir den Index der Zeile (Zählung beginnt bei 0), in diesem Fall also 0. Soll der dargestellte Datensatz nun geändert werden, fügst Du die Zeile (also den kompletten String) wieder aus den Edits zusammen und legst ihn in der Liste an der alten Position (also 0) ab. Nach einer Änderung der Nummer von 1 auf z.B. 20 sähe das dann anschließend so aus:
Code:
Das Alles geschieht bis zur Speicherung lediglich im Hauptspeicher, deshalb der Vorschlag mit einer TStringlist. Erst wenn Du diese mit SaveToFile abspeicherst, ist die Datei auch geändert. Soweit klar?
A;B;20 //<- Nummer geändert
C;D;2 E;F;3 G;H;4 |
Re: Telefonbuch
ja
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:27 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