AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Telefonbuch

Ein Thema von funkuchn · begonnen am 8. Okt 2009 · letzter Beitrag vom 10. Okt 2009
Antwort Antwort
Seite 7 von 8   « Erste     567 8      
funkuchn

Registriert seit: 20. Sep 2009
Ort: Boblitz
81 Beiträge
 
Delphi 6 Professional
 
#61

Re: Telefonbuch

  Alt 10. Okt 2009, 14:07
So da bin ich wieder und die Suchfunktion habe ich so umgeschrieben, funktion iert auch suer
Delphi-Quellcode:
begin
 SuchName:=edit6.text;
 AnzahlEintraege:=Telefonbuch.Count div 2;

 for i:=AnzahlEintraege-1 downto 0 do
     if Telefonbuch[i*2]=SuchName then
      begin
       showmessage(Suchname+' wurde gefunden. Die Telefonnummer lautet: '+Telefonbuch[i*2+1]);
      end
      else
     if Telefonbuch[i*2+1]=SuchName then
      begin
       showmessage(Suchname+'wurde gefunden. Der Name lautet:'+Telefonbuch[i*2]);
       end;

end;
jetzt brauch ich nur noch Tipps, wegen dem Sortieren, habe das jetzt mit Stringlist gemacht, aber das ist ja iwie doof, da ordnet der den Namen ja nicht mehr der Person zu und das sollte ja eigentlich so bleiben...Tipps?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.618 Beiträge
 
Delphi 12 Athens
 
#62

Re: Telefonbuch

  Alt 10. Okt 2009, 14:20
Und genau deshalb hatte ich den kompletten Datensatz in eine Zeile geschrieben. Da müsste man nur in der Sortierroutine das entsprechende Feld "herauspuhlen" und könnte dann ganz easy die Reihenfolge tauschen. alleinherrscher, übernehmen Sie
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#63

Re: Telefonbuch

  Alt 10. Okt 2009, 14:27
Hey, sehr gut hast du das gemacht mit der Suchfunktion!

Also mit dem Sortieren:

Ich würde als erstes eine Funktion bauen, die dir zwei Einträge deines Telefonbuchs tauscht. Dann kannst du den rest mit gängigen Sortieralgorithmen machen.

Also fangen wir mal an:

Delphi-Quellcode:

procedure TForm1.TauscheTelefonbuchEintrag(Index1,Index2:integer);
var TauschName,TauschTelefonnummer:string;
     Anzahl:integer;
begin

//zunächst sicherstellen, dass beide Einträge kleiner als die Anzahl der Telefonbucheinträge sind:
Anzahl:=Telefonbuch.count div 2;
if (Index1>Anzahl-1) or (Index2>Anzahl-1) then exit;

//Den Eintrag mit Nummer Index1 in dem Zwischenspeicher schreiben:
Tauschname:=Telefonbuch[2*Index1];
TauschTelefonnummer:=Telefonbuch[2*Index1+1];


//Eintrag Index2 in Eintrag Index1 schreiben:
Telefonbuch[2*Index1]:=Telefonbuch[2*Index2];
Telefonbuch[2*Index1+1]:=Telefonbuch[2*Index2+1];

//Eintrag Index2 aus Zwischenspeicher lesen:
Telefonbuch[2*Index2]:=Tauschname;
Telefonbuch[2*Index2+1]:=TauschTelefonnummer;


end;
//edit: zwei kleine Fehler entfernt (um 15.06 Uhr)
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
funkuchn

Registriert seit: 20. Sep 2009
Ort: Boblitz
81 Beiträge
 
Delphi 6 Professional
 
#64

Re: Telefonbuch

  Alt 10. Okt 2009, 14:31
bevor ich damit anfange, was ist mit INdex1/2 gemeint? Der Inhalt des gespeicherten oder wie?
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#65

Re: Telefonbuch

  Alt 10. Okt 2009, 14:37
Zitat von funkuchn:
bevor ich damit anfange, was ist mit INdex1/2 gemeint? Der Inhalt des gespeicherten oder wie?
Die Nummer des Eintrages:

warte ich mache ein bildchen dazu...
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
funkuchn

Registriert seit: 20. Sep 2009
Ort: Boblitz
81 Beiträge
 
Delphi 6 Professional
 
#66

Re: Telefonbuch

  Alt 10. Okt 2009, 14:38
okay
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#67

Re: Telefonbuch

  Alt 10. Okt 2009, 14:48
Index1 und Index2 sind also die Indizes der Telefonbucheinträge, also die zweite Spalte in der Grafik

Du könntest also sagen: Tausche Eintrag 0 und Eintrag 1.

Dann würde Hans Dieter und Tante Käthe inkl. Telefonnummer getauscht.

okay?

//EDIT: Alle Fehler behoben

//Edit:

So, nun schonmal weiter im Programm:

Frage: Wie können wir einfach nach Namen sortieren?

Die intuitive Antwort ist doch:
1) Suche aus meiner Liste den Namen heraus, dessen Buchstaben, verglichen mit allen anderen Namen in der Liste, am weitesten vorne im Alphabet stehen.
2) Tausche diesen Eintrag an den Anfang der Liste.
3) Betrachte dir jetzt nur noch den Rest der Liste und suche erneut aus den verbleibenden Namen in der Liste den Namen, der am weitesten vorne im Alphabet steht.
4) Tausche den Namen auf die zweite Position in der Liste
5) usw...

Wir brauchen also nun folgende Hilfsmittel, um die Suche durchführen zu können:

1. FOR-Schleifen
2. Eine Funktion, die die Namen miteinander vergleicht, und entscheidet, welcher Name weiter vorn im Alphabet steht. Dies leistet die Funktion Hier im Forum suchenCompareStr
3. Unsere Tauschprozedur TauscheTelefonbuchEintrag

Überleg dir mal ein bisschen was dazu, und dann machen wir weiter
Angehängte Grafiken
Dateityp: bmp stringgrid_542.bmp (21,5 KB, 13x aufgerufen)
Dateityp: bmp stringgrid2_215.bmp (457,5 KB, 6x aufgerufen)
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
funkuchn

Registriert seit: 20. Sep 2009
Ort: Boblitz
81 Beiträge
 
Delphi 6 Professional
 
#68

Re: Telefonbuch

  Alt 10. Okt 2009, 17:17
Okay, das Prinzip habe ich verstanden....
also nur die Theorie, beim Umsetzen...ähm...naja....kam nichts Gescheites raus
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#69

Re: Telefonbuch

  Alt 10. Okt 2009, 17:30
Okay.

Also etwas pseudo-code:
Code:
Zähle j von 0 bis Anzahl_der_Telefonbucheinträge-1 hoch
  Tauschindex=j
  Zähle i von j bis Anzahl_der_Telefonbucheinträge-1 hoch
     Falls Telefonbucheintrag[2*i] weiter vorn im Alphabet steht als Telefonbucheintrag[2*TauschIndex]
         dann: Setze TauschIndex=i
  Tausche_Telefonbucheintrag(j,TauschIndex)
Erklärung: i und j sind Laufindizes, die durch eine FOR Schleife hochgezählt werden.
TauschIndex enthält den Index des Namens im TElefonbuch, der am weitestens vorne im Alphabet steht.


Versuch mal, das in Delphi Code umzubauen. Wenn du noch Verständnisfragen hast, sag bescheid.

Als Hilfe:

Die If-Abfrage kannst du so programmieren:

Delphi-Quellcode:
      if CompareStr(Telefonbuch[2*i],Telefonbuch[2*TauschIndex])<0 then
       TauschIndex:=i;
Info zu CompareStr

Viel Erfolg!

//edit: wieder mal ne kleine Code-Korrektur...sry...
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
funkuchn

Registriert seit: 20. Sep 2009
Ort: Boblitz
81 Beiträge
 
Delphi 6 Professional
 
#70

Re: Telefonbuch

  Alt 10. Okt 2009, 17:48
okay, mein Versuch ^^:

Delphi-Quellcode:
for i:=0 downto AnzahlEintraege-1 do
 Tauschindex:=j;
 for i[j]:=0 downto AnzahlEintraege-1 do
 If Telefonbucheintrag[2*i]>Telefonbucheintrag[2*Tauschindex];
 then TauschIndex:=i;
 Tausche_Telefonbucheintrag(j,Tauschindex);
ich weiß, ich bin unfähig >.<
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 7 von 8   « Erste     567 8      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 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