| Autor |
Beitrag |
Cyberstarmh
      
Beiträge: 16
Win XP
Delphi
|
Verfasst: Mi 13.02.08 11:10
Hallo,
Ich schreibe gerade ein Telefonverwaltungsprogramm.
Es ist fast fertig, nur die Suchfunktion sorgt für Kopfschmerzen.
Kann mir jemand helfen? ---->
Was habe ich:
(Developerstudio 2006 Turbo Delphi)
-drei Editfelder die zusammengefügt in eine Listbox eingetragen werden
-Vorname , Nachname , Telefonnummer (ergeben einen Eintrag in der Listbox)
-Hinzufügen und löschen funktioniert alles
-er speichert alles ab in TXT.
Was will ich machen:
Problem:
-ich möchte durch die Eingabe in ein EditFeld Übereinstimmungen suchen und finden
-der Eintrag soll in der Listbox markiert werden
-ein Panel soll erscheinen mit dem Hinweis 'Übereinstimmung gefunden'
Danke an Alle die sich die Mühe machen.
MfG Cyberstarmh
Moderiert von jasocul: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mi 13.02.2008 um 11:11
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Mi 13.02.08 11:26
was willst du denn genau vergleichen ?
nur den vornamen oder nur nachname, etc ?
den ganzen Eintrag ?
nur vorname:
schau dir mal pos() an
ganzer eintrag
am einfachsten mit
Liste durchlaufen und per
(suchtext = listbox.strings[i])
bzw
(uppercase(suchtext) = uppercase(listbox.strings[i]))
die einträge vergleichen, wobei du natürlich drauf achten musst,
das du den suchtext im selben format aufbaust, wie die einträge
in der listbox und auch die Gross/Kleinschreibung bedenken solltest.
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Mi 13.02.08 11:31
ListBox.Items.IndexOf wäre auch noch eine Möglichkeit.
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
Cyberstarmh 
      
Beiträge: 16
Win XP
Delphi
|
Verfasst: Mi 13.02.08 12:13
Die 'strings[i]' gibt er mir als undefinierter Bezeichner aus.
Woran liegt das?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Suchen; var i: Integer; wort1:string; wort2:string; begin Wort1:=edVorname.text; Wort2:=listboxAnzeige.strings[i]; (uppercase(Wort1) = uppercase(listboxAnzeige.strings[i])); if ListboxAnzeige.items[ListboxAnzeige.items.indexof]=edVorname.text then begin Showmessage('Übereinstimmung gefunden!'); end; end; |
Und danke für die guten Vorschlage
Moderiert von jasocul: Delphi-Tags hinzugefügt
|
|
nagel
      
Beiträge: 708
Win7, Ubuntu 10.10
|
Verfasst: Mi 13.02.08 12:16
items[i] sollte das wohl heißen.
|
|
Cyberstarmh 
      
Beiträge: 16
Win XP
Delphi
|
Verfasst: Mi 13.02.08 12:32
Wie solls auch anders sein.
Ist das eine Problem behoben, taucht auch gleich ein Neues auf.
In der Zeile mit (uppercase......[Fehler: Anweisung erwartet aber Ausdruck vom Typ Boolean gefunden]
In der Zeile if ListboxAnzeige.......... [Fehler: nicht genügend wirkliche Parameter]
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Mi 13.02.08 12:59
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button1Click(Sender: TObject); begin if ListBox1.Items.IndexOf(Edit1.Text)<>-1 then ShowMessage('Gefunden') else ShowMessage('Nicht Gefunden') end; |
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
Cyberstarmh 
      
Beiträge: 16
Win XP
Delphi
|
Verfasst: Mi 13.02.08 13:18
|
|
Xong
      
Beiträge: 113
WIN 2000
Borland Developer Studio 2006
|
Verfasst: Mi 13.02.08 13:32
Cyberstarmh hat folgendes geschrieben: | | Passiert gar nichts. |
... ist keine Fehlerbeschreibung.
|
|
Cyberstarmh 
      
Beiträge: 16
Win XP
Delphi
|
Verfasst: Mi 13.02.08 13:46
Die trifft es aber ganz genau.
Ich bekomm keine Fehlermeldung und auch keine Message, egal in welcher Form ich das gesuchte Wort eingebe.
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Mi 13.02.08 14:11
Wenn du GAR KEINE Message bekommst, machst du irgendwas grundlegendes falsch, da es sich hierbei um eine einfache if-abfrage handelt, und in beiden der zwei möglichen Fällen etwas angezeigt wird. (d.h. du solltest zumindest die Message aus dem else-Teil sehen).
Hast du den Code auch im richtigen Event stehen, also im OnClick des Buttons?
|
|
Cyberstarmh 
      
Beiträge: 16
Win XP
Delphi
|
Verfasst: Mi 13.02.08 14:28
Ich werd mir das mal nochmal angucken.
Es ist sicherlich sehr viel ist, aber fals sich das jemand anguckt und mir trotzdem noch hilft. Danke
Wie schon gesagt, die Suchfunktion funktioniert nicht.
Siehe Zeile : 86,112,245-248 und 494-517. THX
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349: 350: 351: 352: 353: 354: 355: 356: 357: 358: 359: 360: 361: 362: 363: 364: 365: 366: 367: 368: 369: 370: 371: 372: 373: 374: 375: 376: 377: 378: 379: 380: 381: 382: 383: 384: 385: 386: 387: 388: 389: 390: 391: 392: 393: 394: 395: 396: 397: 398: 399: 400: 401: 402: 403: 404: 405: 406: 407: 408: 409: 410: 411: 412: 413: 414: 415: 416: 417: 418: 419: 420: 421: 422: 423: 424: 425: 426: 427: 428: 429: 430: 431: 432: 433: 434: 435: 436: 437: 438: 439: 440: 441: 442: 443: 444: 445: 446: 447: 448: 449: 450: 451: 452: 453: 454: 455: 456: 457: 458: 459: 460: 461: 462: 463: 464: 465: 466: 467: 468: 469: 470: 471: 472: 473: 474: 475: 476: 477: 478: 479: 480: 481: 482: 483: 484: 485: 486: 487: 488: 489: 490: 491: 492: 493: 494: 495: 496: 497: 498: 499: 500: 501: 502: 503: 504: 505: 506: 507: 508: 509: 510: 511: 512: 513: 514: 515: 516: 517: 518: 519: 520: 521: 522: 523: 524: 525: 526: 527: 528: 529: 530: 531: 532: 533: 534: 535: 536: 537: 538: 539: 540: 541: 542: 543: 544: 545: 546: 547: 548: 549: 550: 551: 552: 553: 554: 555: 556: 557: 558: 559: 560: 561: 562: 563: 564: 565: 566: 567: 568: 569: 570: 571: 572: 573: 574: 575: 576: 577: 578: 579: 580: 581: 582: 583: 584: 585: 586: 587: 588: 589: 590: 591: 592: 593: 594: 595: 596: 597: 598: 599: 600: 601:
| unit mTelefonverwaltung;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type TForm1 = class(TForm) lbUeberschrift: TLabel; lbVorname: TLabel; lbNachname: TLabel; edVorname: TEdit; edNachname: TEdit; edTelefonnummer: TEdit; lbTelefonnummer: TLabel; ListBoxAnzeige: TListBox; btSchliessen: TButton; btNeu: TButton; btSuchen: TButton; btHinzufuegen: TButton; btLoeschen: TButton; lbTelefonverwaltunsliste: TLabel; rbGruen: TRadioButton; rbRot: TRadioButton; rbBlau: TRadioButton; rbGelb: TRadioButton; plEnde: TPanel; EndeTimer: TTimer; plLogin: TPanel; edPasswortLogin: TEdit; edNameLogin: TEdit; lbNameLogin: TLabel; lbPasswortLogin: TLabel; btLogin: TButton; btSchliessenLogin: TButton; plHinweis: TPanel; plHinweis2: TPanel; procedure btSchliessenClick(Sender: TObject); procedure btNeuClick(Sender: TObject); procedure btHinzufuegenClick(Sender: TObject); procedure btLoeschenClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure EndeTimerTimer(Sender: TObject); procedure btLoginClick(Sender: TObject); procedure btSchliessenLoginClick(Sender: TObject); procedure btLoeschenMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure btLoeschenMouseLeave(Sender: TObject); procedure btHinzufuegenMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure btHinzufuegenMouseLeave(Sender: TObject); procedure btSuchenMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure btSuchenMouseLeave(Sender: TObject); procedure btLoginMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure btLoginMouseLeave(Sender: TObject); procedure btSchliessenLoginMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure btSchliessenLoginMouseLeave(Sender: TObject); procedure ListBoxAnzeigeMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure ListBoxAnzeigeMouseLeave(Sender: TObject); procedure btNeuMouseLeave(Sender: TObject); procedure btNeuMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure btSchliessenMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure btSchliessenMouseLeave(Sender: TObject); procedure rbRotClick(Sender: TObject); procedure rbBlauClick(Sender: TObject); procedure rbGruenClick(Sender: TObject); procedure rbGelbClick(Sender: TObject); procedure rbGruenMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure rbGruenMouseLeave(Sender: TObject); procedure rbRotMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure rbRotMouseLeave(Sender: TObject); procedure rbGelbMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure rbGelbMouseLeave(Sender: TObject); procedure ListBoxAnzeigeClick(Sender: TObject); procedure btSuchenClick(Sender: TObject); procedure rbBlauMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure edNameLoginMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure edNameLoginMouseLeave(Sender: TObject); procedure edPasswortLoginMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure edPasswortLoginMouseLeave(Sender: TObject); procedure rbBlauMouseLeave(Sender: TObject); private procedure Loeschen; procedure Schliessen; procedure Hinzufuegen; procedure Login; procedure SchliessenLogin; Procedure Suchen; public end;
var Form1: TForm1; Name,Vorname,Telefonnummer:string; Eintragzaehler,Doppeleintrag:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin plEnde.visible:=false; lbVorname.visible:=false; lbNachname.visible:=false; edVorname.visible:=false; edNachname.visible:=false; edTelefonnummer.visible:=false; lbTelefonnummer.visible:=false; ListBoxAnzeige.visible:=false; btSchliessen.visible:=false; btNeu.visible:=false; btSuchen.visible:=false; btHinzufuegen.visible:=false; btLoeschen.visible:=false; lbTelefonverwaltunsliste.visible:=false; rbGruen.visible:=false; rbRot.visible:=false; rbBlau.visible:=false; rbGelb.visible:=false; plEnde.visible:=false; plHinweis.visible:=false; plLogin.visible:=true; edPasswortLogin.visible:=true; edNameLogin.visible:=true; lbNameLogin.visible:=true; lbPasswortLogin.visible:=true; btLogin.visible:=true; plHinweis2.Visible:=true;
if (FileExists(ExtractFilePath(Application.ExeName)+'Telefonliste.txt ')) then begin ListboxAnzeige.items.LoadFromFile(ExtractFilePath(Application.ExeName)+'Telefonliste.txt' ) end; end;
procedure TForm1.btHinzufuegenMouseLeave(Sender: TObject); begin plHinweis.visible:=false; end;
procedure TForm1.btHinzufuegenMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin plHinweis.Visible:=true; plHinweis.caption:='Hier können Sie Einträge ihrer Telefonliste hinzufügen oder bearbeiten.'; end;
procedure TForm1.btLoeschenClick(Sender: TObject); begin Loeschen; end;
procedure TForm1.btLoeschenMouseLeave(Sender: TObject); begin plHinweis.visible:=false; end;
procedure TForm1.btLoeschenMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin plHinweis.visible:=true; plHinweis.caption:='Hier können Sie alle Einträge oder auch nur einen einzelnen Eintrag der Telefonliste löschen.'; end;
procedure TForm1.btLoginClick(Sender: TObject); begin login; end;
procedure TForm1.btLoginMouseLeave(Sender: TObject); begin plHinweis.visible:=false; end;
procedure TForm1.btLoginMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin plHinweis.Visible:=true; plHinweis.caption:='Bitte diesen Knopf betätigen, wenn Sie ihre Logindaten eingegeben haben.'; end;
procedure TForm1.btSchliessenClick(Sender: TObject); begin Schliessen; end;
procedure TForm1.btSchliessenLoginClick(Sender: TObject); begin SchliessenLogin; end;
procedure TForm1.btSchliessenLoginMouseLeave(Sender: TObject); begin plHinweis.visible:=false; end;
procedure TForm1.btSchliessenLoginMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin plHinweis.visible:=true; plHinweis.caption:='Hier könnne sie das Programm sofort beenden.'; end;
procedure TForm1.btSchliessenMouseLeave(Sender: TObject); begin plHinweis.visible:=false; end;
procedure TForm1.btSchliessenMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin plHinweis.visible:=true; plHinweis.caption:='Hier können Sie das Programm beenden und speichern.'; end;
procedure TForm1.btSuchenClick(Sender: TObject); begin Suchen; end;
procedure TForm1.btSuchenMouseLeave(Sender: TObject); begin plHinweis.visible:=false; end;
procedure TForm1.btSuchenMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin plHinweis.Visible:=true; plHinweis.caption:='Hier können Sie Einträge suchen lassen. Bitte geben Sie den Suchbegriff in das Feld Vorname ein.'; end;
procedure TForm1.edNameLoginMouseLeave(Sender: TObject); begin plHinweis.Visible:=false; end;
procedure TForm1.edNameLoginMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin plHinweis.visible:=true; plHinweis.caption:='Geben Sie hier bitte ihren Benuzernamen ein.'; end;
procedure TForm1.edPasswortLoginMouseLeave(Sender: TObject); begin plHinweis.Visible:=false; end;
procedure TForm1.edPasswortLoginMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin plHinweis.visible:=true; plHinweis.caption:='Geben Sie hier bitte ihr Passwort ein.'; end;
procedure TForm1.btHinzufuegenClick(Sender: TObject); begin Hinzufuegen; end;
procedure TForm1.btNeuClick(Sender: TObject); begin edVorname.Clear; edNachname.Clear; edTelefonnummer.Clear; end;
procedure TForm1.btNeuMouseLeave(Sender: TObject); begin plHinweis.visible:=false; end;
procedure TForm1.btNeuMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin plHinweis.visible:=true; plHinweis.caption:='Hier löschen Sie ihre Eingaben unter Vorname, Nachname und Telefonnummer.'; end;
procedure TForm1.rbBlauClick(Sender: TObject); begin color:=clblue; end;
procedure TForm1.rbBlauMouseLeave(Sender: TObject); begin plHinweis.Visible:=false; end;
procedure TForm1.rbBlauMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin plHinweis.visible:=true; plHinweis.caption:='Hier ändern Sie die Formularfarbe in Blau.'; end;
procedure TForm1.rbGelbClick(Sender: TObject); begin color:=clyellow; end;
procedure TForm1.rbRotClick(Sender: TObject); begin color:=clred; end;
procedure TForm1.rbGruenClick(Sender: TObject); begin color:=clgreen; end;
procedure TForm1.rbGelbMouseLeave(Sender: TObject); begin plHinweis.visible:=false; end;
procedure TForm1.rbGelbMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin plHinweis.visible:=true; plHinweis.caption:='Hier Hier ändern Sie die Formularfarbe in Gelb.'; end;
procedure TForm1.rbGruenMouseLeave(Sender: TObject); begin plHinweis.visible:=false; end;
procedure TForm1.rbGruenMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin plHinweis.visible:=true; plHinweis.caption:='Hier ändern Sie die Formularfarbe in Grün.'; end;
procedure TForm1.rbRotMouseLeave(Sender: TObject); begin plHinweis.visible:=false; end;
procedure TForm1.rbRotMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin plHinweis.visible:=true; plHinweis.caption:='Hier Hier ändern Sie die Formularfarbe in Rot.'; end;
procedure TForm1.ListBoxAnzeigeMouseLeave(Sender: TObject); begin plHinweis.Visible:=false; end;
procedure TForm1.ListBoxAnzeigeMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin plHinweis.visible:=true; plHinweis.caption:='Hier wird ihre Telefonliste angezeigt.'; end;
procedure TForm1.Login; var LoginDaten:string; begin LoginDaten:=edNameLogin.text+edPasswortLogin.text; if LoginDaten='Matthiasrsgt' then begin plEnde.visible:=true; lbVorname.visible:=true; lbNachname.visible:=true; edVorname.visible:=true; edNachname.visible:=true; edTelefonnummer.visible:=true; lbTelefonnummer.visible:=true; ListBoxAnzeige.visible:=true; btSchliessen.visible:=true; btNeu.visible:=true; btSuchen.visible:=true; btHinzufuegen.visible:=true; btLoeschen.visible:=true; lbTelefonverwaltunsliste.visible:=true; rbGruen.visible:=true; rbRot.visible:=true; rbBlau.visible:=true; rbGelb.visible:=true; plEnde.visible:=false; plLogin.visible:=false; edPasswortLogin.visible:=false; edNameLogin.visible:=false; lbNameLogin.visible:=false; lbPasswortLogin.visible:=false; btLogin.visible:=false; btSchliessenLogin.Visible:=false; end else if LoginDaten='Floriangbhdt' then begin plEnde.visible:=true; lbVorname.visible:=true; lbNachname.visible:=true; edVorname.visible:=true; edNachname.visible:=true; edTelefonnummer.visible:=true; lbTelefonnummer.visible:=true; ListBoxAnzeige.visible:=true; btSchliessen.visible:=true; btNeu.visible:=true; btSuchen.visible:=true; btHinzufuegen.visible:=true; btLoeschen.visible:=true; lbTelefonverwaltunsliste.visible:=true; rbGruen.visible:=true; rbRot.visible:=true; rbBlau.visible:=true; rbGelb.visible:=true; plEnde.visible:=false; plLogin.visible:=false; edPasswortLogin.visible:=false; edNameLogin.visible:=false; lbNameLogin.visible:=false; lbPasswortLogin.visible:=false; btLogin.visible:=false; btSchliessenLogin.Visible:=false; end else begin Showmessage('Logindaten sind fehlerhaft!'); end; end;
procedure TForm1.Suchen; begin if ListBoxAnzeige.Items.IndexOf(edVorname.Text)<>-1 then ShowMessage('Gefunden') else ShowMessage('Nicht Gefunden') end;
procedure TForm1.Hinzufuegen; var i: Integer; begin Name:=edNachname.Text; Vorname:=edVorname.text; Telefonnummer:=edTelefonnummer.text; Doppeleintrag:=0; Eintragzaehler:=0; for i := 0 to ListBoxAnzeige.Count - 1 do begin if Vorname+' '+Name+' '+Telefonnummer= ListBoxAnzeige.items[i] then begin Doppeleintrag:=1; ListBoxAnzeige.itemindex:=i; Showmessage('Eintrag schon vorhanden!'); end; end; if Vorname+Name+Telefonnummer='' then begin Doppeleintrag:=1; showmessage('Bitte geben Sie einen vollständigen Eintrag ein.'); end else begin if Name='' then begin Doppeleintrag:=1; Showmessage('Bitte geben Sie einen Nachnamen ein.'); end; if Vorname='' then begin Doppeleintrag:=1; Showmessage('Bitte geben Sie einen Vornamen ein.'); end; if Telefonnummer='' then begin Doppeleintrag:=1; Showmessage('Bitte geben Sie eine Telefonnummer ein.'); end; if Doppeleintrag=0 then begin ListBoxAnzeige.Items.Add(Vorname+' '+Name+' '+Telefonnummer); Eintragzaehler:=Eintragzaehler+1; end; end; end;
procedure TForm1.ListBoxAnzeigeClick(Sender: TObject); var Kontakt:string; position:integer; begin if ListBoxAnzeige.ItemIndex > -1 then begin Kontakt:=ListBoxAnzeige.Items[ListboxAnzeige.itemindex]; position:=POS(' ',Kontakt); edVorname.Text:=Copy(Kontakt,1,position-1); Delete(Kontakt,1,position+0); position:=POS(' ',Kontakt); edNachname.Text:=Copy(Kontakt,1,position-1); Delete(Kontakt,1,position+0); position:=POS(' ',Kontakt); edTelefonnummer.Text:=Copy(Kontakt,position+1,length(Kontakt)); end; end;
procedure TForm1.Loeschen; var i: Integer; begin if MessageDLG('Wollen Sie die ganze Liste löschen?',mtConfirmation,[mbYes,mbNo],0)<>mrNo then begin ListBoxAnzeige.Items.Clear; Eintragzaehler:=Eintragzaehler+1; ListboxAnzeige.Items.savetofile(ExtractFilePath(Application.ExeName)+'Telefonliste.txt') ; end else if ListBoxAnzeige.ItemIndex < 0 then begin Showmessage('Bitte wählen Sie den zu löschenden Eintrag aus.'); end else if ListBoxAnzeige.ItemIndex <> -1 then begin if MessageDLG('Wollen Sie den Eintrag wirklich löschen?',mtConfirmation,[mbYes,mbNo],0)<>mrNo then begin with ListboxAnzeige do begin i := 0; while(i <= Items.Count - 1) and (SelCount > 0) do begin while (i <= Items.Count - 1) and Selected[i] do Items.Delete(i); inc(i); end; end; end; end; end;
Procedure TForm1.SchliessenLogin; begin if MessageDLG('Möchten Sie das Programm wirklich beenden?',mtConfirmation,[mbYes,mbNo],0)<>mrNo then begin close; end; end;
procedure TForm1.Schliessen; begin if MessageDLG('Möchten Sie die Daten speichern?',mtConfirmation,[mbYes,mbNo],0)<>mrNo then begin ListboxAnzeige.Items.savetofile(ExtractFilePath(Application.ExeName)+'Telefonliste.txt' ); end; if MessageDLG('Möchten Sie das Programm wirklich beenden?',mtConfirmation,[mbYes,mbNo],0)<>mrNo then begin close; end; end;
procedure TForm1.EndeTimerTimer(Sender:TObject); begin close; end;
end. |
|
|
Tarry
      
Beiträge: 213
Erhaltene Danke: 1
|
Verfasst: Mi 13.02.08 16:02
Hi,
ich hab in deinem Code leider nicht die relevanten Teile gefunden, aber Versuche doch mal das hier, hat bei meinem Wecker auch prima geklappt:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var i: integer; begin for i := 0 to ListBox1.Count -1 do begin if ListBox1.Items[i] = 'MeinText' then ListBox1.ItemIndex := i; end; end; |
Der Code sucht nun nach Übereinstimmungen mit 'MeinText' und markiert den gefundenen Eintrag.
Gruß
Tarry
PS: Den EIntragszähler kannst du dir schenken, es gib ListBox1.Count 
_________________ "Es gibt zwei Dinge, die unendlich sind. Das Universum und die menschliche Dummheit. Beim Universum bin ich mir noch nicht ganz sicher." -Albert Einstein
|
|
raiguen
      
Beiträge: 374
WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
|
Verfasst: Mi 13.02.08 19:29
| Cyberstarmh hat folgendes geschrieben: | -drei Editfelder die zusammengefügt in eine Listbox eingetragen werden
-Vorname , Nachname , Telefonnummer (ergeben einen Eintrag in der Listbox) |
verbietet schon mal die 'Such'funktion mittels ListBoxAnzeige.Items.IndexOf(edVorname) Warum? Die Funktion ist nur dann erfolgreich, wenn eine EXAKTE Übereinstimmung des 'Such'Textes mit einem ListBox-Eintrag vorhanden ist -> also wird eine 'Teil-Such' (hier nur nach Vorname) schon mal nicht funktionieren
Was tun? DAs hier z.B.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Suchen; var i: integer; begin for i := 0 to ListBoxAnzeige.Count -1 do if Pos(Uppercase(edVorname.Text), Uppercase(ListBoxAnzeige.Items[i]) > 0 then begin ListBoxAnzeige.ItemIndex := i; break; end; end; |
|
|
Cyberstarmh 
      
Beiträge: 16
Win XP
Delphi
|
Verfasst: Mi 13.02.08 19:30
Danke an Alle für eure Hilfe.
Das Problem ist nur, dass meine Listboxeinträge sich aus drei Editfeldern zusammensetzen und damit ein einfacher befehl nicht reicht.
Ich benötige eine Suchfunktion bei der es egal ist an welcher Position des String der Suchtext steht.
Fals noch jemand eine Idee hat, bitte posten. Danke
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Mi 13.02.08 20:07
Cyberstarmh hat folgendes geschrieben: | | Ich benötige eine Suchfunktion bei der es egal ist an welcher Position des String der Suchtext steht. |
Die Methode von raiguen klappt dannn schon. Mit Pos ermittelst du, an welcher Position ein String in einem anderen steht, und somit auch, ob er überhaupt vorkommt.
Verwende aber lieber AnsiUpperCase statt UpperCase, weil bei der Ansi-Funktion die Umlaute auch kodiert werden.
Zuletzt bearbeitet von Yogu am Mi 13.02.08 20:21, insgesamt 1-mal bearbeitet
|
|
raiguen
      
Beiträge: 374
WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
|
Verfasst: Mi 13.02.08 20:11
Cyberstarmh hat folgendes geschrieben: | | Fals noch jemand eine Idee hat... |
Siehe mein Posting  möglicherweise ist es bei deiner Antwort noch nicht online gewesen
[NACHTRAG]Kaum antwortet man, schon ist ein anderer wieder schneller
Yogu hat folgendes geschrieben: | | ..Verwende aber lieber AnsiUpperCase statt UpperCase, weil bei der Ansi-Funktion die Umlaute auch kodiert werden. |
jo, ist richtig und auch sinnvoll:!:
[/NACHTRAG]
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Mi 13.02.08 20:22
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
Cyberstarmh 
      
Beiträge: 16
Win XP
Delphi
|
Verfasst: Do 14.02.08 12:47
Vielen Dank Blackheart666 und natürlich auch an alle anderen.
Die Suchfunktion funktioniert.
Das 'break' benötige ich nicht, da er mir ja auch mehrere Übereinstimmungen anzeigen soll.
Was nur komisch ist, dass er trotz Anweisung den gefundenen Eintrag nicht in der Listbox markiert. Hab gedacht es liegt an der Message, weshalb er dann die Markierung löscht, dem ist aber nicht so.
Das gleiche Problem habe ich bei der Funktion 'Hinzufügen'.
Liegt dort ein generelles Problem vor?
Hab ich da vielleicht etwas angeklick von dem ich nicht weiß was es ist?
[Multiselect=true]? --> kann hier das Problem liegen?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Suchen; var i: integer; begin for i := 0 to ListBoxanzeige.Count -1 do if Pos(AnsiUppercase(edVorname.Text), AnsiUppercase(ListBoxanzeige.Items[i])) > 0 then begin ListBoxAnzeige.Itemindex:=i; showmessage('Übereinstimmung gefunden.'+' '+ListBoxanzeige.Items[i]); end; end; |
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Do 14.02.08 14:20
Statt
Delphi-Quelltext 1:
| ListBox1.ItemIndex := i; |
muss es vermutlich
Delphi-Quelltext 1:
| ListBox1.Selected[i]:=True; |
heißen
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
|