| Autor |
Beitrag |
xflopx
Hält's aus hier
Beiträge: 1
|
Verfasst: So 08.03.09 16:49
hallo!
wie kann man das machen, dass man die mitgliedsnummer selber vergibt und die dann der reihe nach geordnet werden?
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:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type TForm1 = class(TForm) GroupBox1: TGroupBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Button1: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; GroupBox2: TGroupBox; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; GroupBox3: TGroupBox; Button2: TButton; Button3: TButton; Button4: TButton; Edit4: TEdit; Panel1: TPanel; Button5: TButton; Button6: TButton; Button7: TButton; Label4: TLabel; Label15: TLabel; CheckBox: TCheckBox; procedure FormActivate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button1Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button2Click(Sender: TObject); private public end;
TVerein = Record
Vorname : string [15]; Nachname: string [30]; Geburtstag: string[10]; Mitgliedsnummer: integer; bezahlt: string[4];
end;
var Form1: TForm1; VereinDatei: File of TVerein; VereinDatensatz: TVerein;
implementation
{$R *.DFM}
procedure TForm1.FormActivate(Sender: TObject);
begin
AssignFile(Vereindatei,'Verein.dat');
if fileexists('Verein.dat') then Reset(VereinDatei) else Rewrite(VereinDatei);
Label12.Caption := inttostr (Filesize(Vereindatei));
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CloseFile(Vereindatei);
end;
procedure TForm1.Button1Click(Sender: TObject); begin
if (Length(Edit1.text)>0) and (Length(Edit2.text)>0) and (Length(Edit3.text)>0) then
begin
VereinDatensatz.Vorname := edit1.text; VereinDatensatz.Nachname := edit2.text; VereinDatensatz.Geburtstag := edit3.text;
if CheckBox.checked then Vereindatensatz.bezahlt := 'Ja' else Vereindatensatz.bezahlt := 'Nein';
if not eof(Vereindatei) then seek(Vereindatei, filesize (Vereindatei));
write (Vereindatei, Vereindatensatz);
edit1.text := ''; edit2.text := ''; edit3.text := '';
Label12.caption := inttostr (Filesize(Vereindatei));
end
else showmessage('Bitte füllen Sie alle Felder aus!');
end;
procedure TForm1.Button5Click(Sender: TObject); begin
Seek(Vereindatei, 0);
Read(Vereindatei, Vereindatensatz);
Label9.Caption := Vereindatensatz.Vorname; Label10.Caption := Vereindatensatz.Nachname; Label11.Caption := Vereindatensatz.Geburtstag; Label4.Caption := inttostr(Filepos(Vereindatei)); Label14.Caption := Vereindatensatz.bezahlt;
end;
procedure TForm1.Button7Click(Sender: TObject); begin
if eof (Vereindatei) then
begin
seek(VereinDatei, filesize (VereinDatei));
showmessage ('Letzter Datensatz erreicht')
end
else
begin
Read(Vereindatei, Vereindatensatz);
Label9.Caption := Vereindatensatz.Vorname; Label10.Caption := Vereindatensatz.Nachname; Label11.Caption := Vereindatensatz.Geburtstag; Label4.Caption := inttostr(Filepos(Vereindatei)); Label14.Caption := Vereindatensatz.bezahlt;
end;
end;
procedure TForm1.Button6Click(Sender: TObject); var posi: integer;
begin
posi:= filepos(Vereindatei)-2; if posi<0 Then BEGIN posi:=0; showmessage('Erster Datensatz erreicht') END ELSE BEGIN Seek(Vereindatei, posi); Read(Vereindatei, Vereindatensatz); Label9.Caption := Vereindatensatz.Vorname; Label10.Caption := Vereindatensatz.Nachname; Label11.Caption := Vereindatensatz.Geburtstag; Label4.Caption := inttostr(Filepos(Vereindatei)); Label14.Caption := Vereindatensatz.bezahlt; end;
end;
procedure TForm1.Button2Click(Sender: TObject); begin
seek (Vereindatei,0);
repeat
read (VereinDatei, VereinDatensatz);
if edit4.Text = VereinDatensatz.Vorname then
begin
Label9.Caption := Vereindatensatz.Vorname; Label10.Caption := Vereindatensatz.Nachname; Label11.Caption := Vereindatensatz.Geburtstag; Label4.Caption := inttostr(Filepos(Vereindatei)); Label14.Caption := Vereindatensatz.bezahlt;
end;
until eof(Vereindatei);
end;
end. |
danke
Moderiert von Gausi: Quote- durch Delphi-Tags ersetzt
|
|
MDX
      
Beiträge: 595
Erhaltene Danke: 4
Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
|
Verfasst: So 08.03.09 18:28
Vergeben kann man automatische Benutzer-IDs normalerweise mit AUTO_INCREMENT 
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: So 08.03.09 20:08
Hallo und  in der Entwickler-Ecke, xflopx
MDX hat folgendes geschrieben : | Vergeben kann man automatische Benutzer-IDs normalerweise mit AUTO_INCREMENT  |
Es handelt sich hier um typisierte Dateien, nicht um eine Datenbank wie MySQL
Aber vielleicht wäre eine Datenbank gar keine so schlechte Idee. In deinen Code müsste ich mich jetzt erst länger einlesen, jedoch dürfte das Sortieren in den etwas veralteten (  ) Pascal-Dateiroutinen sehr kompliziert werden. Ich habe aber noch nie mit typisierten Dateien gearbeitet.
Aber wenn du etwas mehr über den Quelltext schreiben würdest - zum Beispiel ein paar Kommentare oder die relevante Stelle - könnten wir dir vielleicht besser helfen.
Grüße,
Yogu
|
|
MDX
      
Beiträge: 595
Erhaltene Danke: 4
Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
|
Verfasst: So 08.03.09 20:25
Naja, ich hab nur gelesen dass, das Topic im Forum "Datenbank" steht, deshalb AUTO_INCREMENT =)
|
|
ub60
      
Beiträge: 765
Erhaltene Danke: 130
|
Verfasst: So 08.03.09 20:55
Zum Sortieren:
Du nimmst einen beliebigen Sortieralgorithmus, vergleichst mit dem die Nummern und wenn getauscht werden muss, tauschst Du den gesamten Record.
Zum automatisch Vergeben:
In einer (globalen) Variablen könnte man die aktuelle Nummer mitzählen und dann immer gleich in eine Datei (z.B. Ini-Datei) speichern. Beim Programmstart liest man diesen Wert aus der Datei.
Zu Deinem Programm:
Bitte gib den Edit-Feldern und den Labels, auf die Du zugreifst, sinnvolle Namen (z. B. EditVorname, VornameEdit, edtVorname, oder so was in der Art), dadurch wird das Programm besser lesbar und die Fehlersuche einfacher.
ub60
|
|
|