Hi, wir entwickeln gerade für den Informatikunterricht einen Quizmaker.
Dieser besteht aus zwei Programmen.
Der Developer kann ein Quiz anlegen. Hier kann er beliebig viele Fragen erstellen. Zu jeder Frage gibt er vier Antwortmöglichkeiten an, wovon die erste immer die richtige ist.
Wenn er fertig ist dann speichert der Developer das Quiz als typisierte Datei.
Der User kann dann die Datei einlesen und mit dem Quiz beginnen.
Der nun folgende Quelltext stammt aus dem Developer Programm. Beim Compilieren kommt keine Fehlermeldung. Sobald man aber die einzelnen Buttons drückt kommt es zu Access Violations. Wir haben keine Ahnung wo der Fehler liegt und brauchen dringend Hilfe.
Ich bin sicher ihr könnt mir weiter helfen.
also schonmal großes Dankeschön gruß Alex
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:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, ExtCtrls, StdCtrls;
type
quiz=RECORD Frage:string[255]; A1:string[255]; A2:string[255]; A3:string[255]; A4:string[255]; end;
TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Panel1: TPanel; SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; SpeedButton3: TSpeedButton; SpeedButton4: TSpeedButton; SpeedButton5: TSpeedButton; SpeedButton6: TSpeedButton; SpeedButton7: TSpeedButton; SpeedButton8: TSpeedButton; SpeedButton9: TSpeedButton; SpeedButton10: TSpeedButton; SpeedButton11: TSpeedButton; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; Edit6: TEdit; procedure SpeedButton6Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure SpeedButton4Click(Sender: TObject); procedure SpeedButton7Click(Sender: TObject); procedure SpeedButton11Click(Sender: TObject); procedure SpeedButton8Click(Sender: TObject); procedure SpeedButton10Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure SpeedButton3Click(Sender: TObject); procedure SpeedButton5Click(Sender: TObject); procedure SpeedButton9Click(Sender: TObject); private public end;
var Form1: TForm1;
quiz_array:array of quiz; aktuell:integer; max_array:integer; f:file of quiz; implementation
{$R *.dfm}
procedure TForm1.SpeedButton6Click(Sender: TObject); begin
close; end;
procedure TForm1.SpeedButton2Click(Sender: TObject); VAR
i:integer;
begin
IF saveDialog1.execute THEN BEGIN
assignfile (f, saveDialog1.FileName);
rewrite (f);
i:=1;
WHILE i<=max_array DO
BEGIN
write (f, quiz_array[i]);
i:=i+1;
END;
closefile (f);
END;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject); var
i:integer; begin quiz_array[aktuell].Frage:= edit1.Text;
quiz_array[aktuell].A1:= edit2.Text;
quiz_array[aktuell].A2:= edit3.Text;
quiz_array[aktuell].A3:= edit4.Text;
quiz_array[aktuell].A4:= edit5.Text;
max_array := 0; aktuell := 0; edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
aktuell:=aktuell+1;
end;
procedure TForm1.FormCreate(Sender: TObject); begin max_array:=0; AssignFile(f,'backup.dat');
if FileExists('backup.dat') then ReSet(f)
else ReWrite(f);
end;
procedure TForm1.SpeedButton4Click(Sender: TObject); begin
quiz_array[aktuell].Frage:=edit1.Text;
quiz_array[aktuell].A1:=edit2.Text;
quiz_array[aktuell].A2:=edit3.Text;
quiz_array[aktuell].A3:=edit4.Text;
quiz_array[aktuell].A4:=edit5.Text;
end;
procedure TForm1.SpeedButton7Click(Sender: TObject); begin
edit1.Text:=quiz_array[0].Frage;
edit2.Text:=quiz_array[0].A1;
edit3.Text:=quiz_array[0].A2;
edit4.Text:=quiz_array[0].A3;
edit5.Text:=quiz_array[0].A4;
aktuell:=0;
end;
procedure TForm1.SpeedButton11Click(Sender: TObject); begin
edit1.Text:=quiz_array[max_array].Frage; edit2.Text:=quiz_array[max_array].A1;
edit3.Text:=quiz_array[max_array].A2;
edit4.Text:=quiz_array[max_array].A3;
edit5.Text:=quiz_array[max_array].A4;
aktuell:=max_array; end;
procedure TForm1.SpeedButton8Click(Sender: TObject); begin
aktuell:=aktuell-1; edit1.Text:=quiz_array[aktuell].Frage;
edit2.Text:=quiz_array[aktuell].A1;
edit3.Text:=quiz_array[aktuell].A2;
edit4.Text:=quiz_array[aktuell].A3;
edit5.Text:=quiz_array[aktuell].A4;
end;
procedure TForm1.SpeedButton10Click(Sender: TObject); begin
aktuell:=aktuell+1; edit1.Text:=quiz_array[aktuell].Frage;
edit2.Text:=quiz_array[aktuell].A1;
edit3.Text:=quiz_array[aktuell].A2;
edit4.Text:=quiz_array[aktuell].A3;
edit5.Text:=quiz_array[aktuell].A4;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin CloseFile(f); end;
procedure TForm1.SpeedButton3Click(Sender: TObject); VAR f:File OF quiz; i:integer; begin IF openDialog1.execute THEN BEGIN assignfile (f, openDialog1.FileName);
reset (f);
i:=1; WHILE not EOF (f) DO
BEGIN
read (f, quiz_array[i]);
i:=i+1;
END;
max_array := i-1;
aktuell :=1;
closefile (f);
edit1.Text:= quiz_array [aktuell].Frage;
edit2.Text:= quiz_array [aktuell].A1;
edit3.Text:= quiz_array [aktuell].A2;
edit4.Text:= quiz_array [aktuell].A3;
edit5.Text:= quiz_array [aktuell].A4; END;
end;
procedure TForm1.SpeedButton5Click(Sender: TObject); VAR i:integer; begin FOR i:=aktuell To max_array DO
quiz_array[i]:= quiz_array[i+1];
IF aktuell = max_array THEN aktuell := aktuell -1;
edit1.Text:= quiz_array [aktuell].Frage;
edit2.Text:= quiz_array [aktuell].A1;
edit3.Text:= quiz_array [aktuell].A2;
edit4.Text:= quiz_array [aktuell].A3;
edit5.Text:= quiz_array [aktuell].A4; end;
procedure TForm1.SpeedButton9Click(Sender: TObject); Var z:integer; i:integer; Begin IF saveDialog1.execute THEN
BEGIN
assignfile (f,'backup.dat');
rewrite (f);
i:=aktuell;
write (f, quiz_array[aktuell]);
closefile (f);
END;
Begin
z:=strtoint(Edit6.text);
quiz_array[aktuell]:=quiz_array[z];
end;
IF openDialog1.execute THEN
BEGIN
assignfile (f,'backup.dat');
reset (f);
read (f, quiz_array[i]);
i:=aktuell; max_array := i-1;
aktuell :=1;
closefile (f);
end; end; end. |
Moderiert von
raziel: Quote- durch Delphi-Tags ersetzt und Titel "verkleinert".
Moderiert von
raziel: Topic aus Projekte (Open Source) verschoben am Mo 20.06.2005 um 18:21