Autor |
Beitrag |
woody
Hält's aus hier
Beiträge: 1
|
Verfasst: Di 30.11.04 09:55
hallo
sollen für die schule folgendes programm(von h. achleitner) umarbeiten quasi mit einer such- und einer sortierfunktion erweitern, die zum sortieren habe ich schon ansatzweise aber der rest na ja brett vorm kopf... die suchfuntkion soll nach den kriterien name, straße und wohnort gehen über eine combo box gehen und die ausgabe in der listbox erfolgen...kann mir hier jemand helfen den quelltext zu vervollständigen???
hier ist der bosherige quelltext
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:
| unit Datei3_u;
interface
uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type tDaten = record name: string[30]; strasse: string[25]; PLZ: string[5]; Ort: string[20]; Telefon: string[25]; end; tfile = File of tDaten; TFormDatei3 = class(TForm) LabelNameText: TLabel; LabelStrasseText: TLabel; LabelPlzText: TLabel; LabelOrtText: TLabel; LabelTelefonText: TLabel; OpenDialogdatei: TOpenDialog; SaveDialogDatei: TSaveDialog; ButtonOeffnen: TButton; Button1Satz: TButton; ButtonNext: TButton; ButtonVor: TButton; Editname: TEdit; EditStrasse: TEdit; EditPlz: TEdit; EditOrt: TEdit; Buttonletzter: TButton; Edittelefon: TEdit; Buttonueber: TButton; ButtonNeueDatei: TButton; Beenden: TButton; Save: TButton; ButtonNeu: TButton; suchen: TButton; sortieren: TButton; ListBox1: TListBox; ComboBox1: TComboBox; procedure FormCreate(Sender: TObject); procedure ButtonOeffnenClick(Sender: TObject); procedure Button1SatzClick(Sender: TObject); procedure ButtonNextClick(Sender: TObject); procedure ButtonVorClick(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure ButtonletzterClick(Sender: TObject); procedure ButtonueberClick(Sender: TObject); procedure ButtonNeueDateiClick(Sender: TObject); procedure beendenclick(Sender: TObject); procedure SaveClick(Sender: TObject); procedure ButtonNeuClick(Sender: TObject); procedure sortierenClick(Sender: TObject); procedure ComboBox1Change(Sender: TObject);
private public end;
var FormDatei3: TFormDatei3; dateiname:string; daten: array[1..30] of tDaten; hdaten: tdaten; datei: tfile; i,count, anzahl:Integer; implementation
{$R *.DFM}
procedure TFormDatei3.FormCreate(Sender: TObject); begin dateiname:=''; end;
procedure TFormDatei3.ButtonOeffnenClick(Sender: TObject); var a:integer; begin if opendialogdatei.execute then begin dateiname:=opendialogdatei.filename; assignfile(datei,dateiname); try reset(datei); anzahl:=filesize(datei); for a:=1 to anzahl do read(datei,daten[a]); button1satz.enabled:=true; buttonletzter.enabled:=true; buttonvor.enabled:=true; buttonnext.enabled:=true; buttonneu.enabled:=true; buttonueber.enabled:=true; suchen.enabled:=true; sortieren.enabled:=true; save.enabled:=true; except dateiname:=''; showmessage('Datei existiert nicht') end end; editname.clear; editstrasse.clear; editplz.clear; editort.clear; edittelefon.clear; end;
procedure TFormDatei3.Button1SatzClick(Sender: TObject);
begin if anzahl<>0 then begin count:=1; editname.text:=daten[count].name; editstrasse.text:=daten[count].strasse; editplz.text:=daten[count].plz; editort.text:=daten[count].ort; edittelefon.text:=daten[count].telefon; end;
end;
procedure TFormDatei3.ButtonNextClick(Sender: TObject);
begin
if not(count>=anzahl) then begin count:=count+1; editname.text:=daten[count].name; editstrasse.text:=daten[count].strasse; editplz.text:=daten[count].plz; editort.text:=daten[count].ort; edittelefon.text:=daten[count].telefon; end else showmessage('Dateiende erreicht!'); end;
procedure TFormDatei3.ButtonVorClick(Sender: TObject);
begin
if count>1 then begin count:=count-1; editname.text:=daten[count].name; editstrasse.text:=daten[count].strasse; editplz.text:=daten[count].plz; editort.text:=daten[count].ort; edittelefon.text:=daten[count].telefon; end else showmessage('Dateianfang erreicht!') ; end;
procedure TFormDatei3.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if dateiname <> '' then closefile(datei); end;
procedure TFormDatei3.ButtonletzterClick(Sender: TObject); begin count:=anzahl; if not (count =0) then begin editname.text:=daten[count].name; editstrasse.text:=daten[count].strasse; editplz.text:=daten[count].plz; editort.text:=daten[count].ort; edittelefon.text:=daten[count].telefon; end else showmessage('Datei enthält keine Datensätze')
end;
procedure TFormDatei3.ButtonueberClick(Sender: TObject); var z:integer; begin
if editname.text<>'' then begin anzahl:=anzahl+1; daten[anzahl].name:=editname.text; daten[anzahl].strasse:=editstrasse.text; daten[anzahl].plz:=editplz.text; daten[anzahl].ort:=editort.text; daten[anzahl].telefon:=edittelefon.text;
end;
end;
procedure TFormDatei3.ButtonNeueDateiClick(Sender: TObject); begin if savedialogdatei.execute then begin if dateiname <> '' then closefile(datei); dateiname:=savedialogdatei.filename; assignfile(datei,dateiname); rewrite(datei); anzahl:=filesize(datei); button1satz.enabled:=true; buttonletzter.enabled:=true; buttonvor.enabled:=true; buttonnext.enabled:=true; buttonneu.enabled:=true; buttonueber.enabled:=true; save.enabled:=true; end end;
procedure TFormDatei3.beendenclick(Sender: TObject); begin close; end;
procedure TFormDatei3.SaveClick(Sender: TObject); var z:integer; begin
if dateiname<>'' then begin seek(datei,0); for z:= 1 to anzahl do write(datei,daten[z]) end else showmessage('Fehler: Zuerst "Datei öffnen" oder "Neue Datei" wählen !') end;
procedure TFormDatei3.ButtonNeuClick(Sender: TObject); begin editname.text:=''; editstrasse.text:=''; editplz.text:=''; editort.text:=''; edittelefon.text:=''; editname.setfocus; end;
procedure TFormDatei3.sortierenClick(Sender: TObject); var i,j :integer; begin for i:=1 to anzahl-1 do for j:=i+1 to anzahl do if (daten [i].name>daten[j].name) then begin hdaten:=daten[i]; daten[i]:=daten[j]; daten[j]:=hdaten; end; end;
procedure TFormDatei3.ComboBox1Change(Sender: TObject); begin
end;
end. |
Zuletzt bearbeitet von woody am Di 30.11.04 11:48, insgesamt 1-mal bearbeitet
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 30.11.04 10:46
Den Quellcode wird dir wohl kaum einer schreiben. Sind schließlich deine Hausaufgaben.
Tipps wirst du bekommen.
Wenn ich es richtig verstanden habe, benutzt du eine ComboBox um festzulegen, in welchem Feld gesucht wird. Dann brauchst du aber noch ein Eingabefeld für den Suchbegriff.
Dann musst du alle Records durchgehen und feststellen, ob im enstprechenden Feld der Suchbegriff enthalten ist. Hier ist dann noch zu klären, ob Groß- und Kleinschreibung berücksichtigt werden soll (siehe dazu AnsiUpperCase).
Zur Darstellung des Suchergebnisses hibt es mehrere Möglichkeiten:
1. Du zeigst den ersten gefunden Datensatz und gibst dem Anwender die Möglichkeit "Weitersuchen"
2. Du zeigst in einer neuen (oder aktualisierst deine bisherige) Liste die Treffer an.
Du benötigst als eine Schleife über die Datensätze.
Dort prüfst du auf Treffer (String-Vergleich)
Dann zeigst du das Ergebnis an.
Viel Spaß bei deiner Hausaufgabe.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 30.11.04 11:11
Als erstes würde ich dich Bitten, deinen Post zu editieren und deinen Quelltext in Delphi-Tags einzuschließen. Dann hast du zum einen Syntax-Highlighting auf dem Source und zum anderen wird die Anzeige dann nicht Seitenweise ausgedehnt.
Weiterhin Ist sowas eigentlich ein typisches Datenbank-Prblem für BDE&Co. Da aber meist in den Schulversionen keine DB-Kompos dabei sind, solltest du nach einem Alternativ-Set gucken. Das Such- bzw. Sortier-Problem würde sich in dem Fall auf jeweils einen SQL-Einzeiler reduzieren.
Ansonsten kannst du aber auch einfach über eine Case-Anweisung Deine Vergleiche durchführen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| Case DeineSpalte.ItemIndex Of 0: 1: 2: ... else Result := False; end; |
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
|