![]() |
Notenprogramm
Hallo an alle,
wie ihr bestimmt seht bin ich neu hier und habe auch glech eine frage da ich ein Programm für die schule schreiben muss, wie das so recht funktioniert, ich habe mir dazu die version delphi 2005 architect edition trail runtergeladen also hab auch nich viel zeit... Also mein programm soll wie folgt aussehen, 7 Textfelder wo man: Name,Vorname, Note-englisch, Note-deutsch,note-informatik und note-mathe, in dem siebten feld soll per knopfdrück der durchschnitt der noten ausgerechnet werden. das kann ich auch selber noch hinkriegen, nun muss noch eine navigationsschaltfläche erstellt werden wo man zwischen den datensätzen hin und her blättern kann. Diese Datensätze sollen sich alle in einem "mehrdimensionalen array" gespeichert werden. desweiteren benötige ich noch eine menübar wo man in textdateien speichern kann (speichern), daten aus textdatei öffnen(öffnen) und programm beenden(application.terminate;). über eine schaltfläche datensätze sollen alle die sich im array befindenen daten in einem stringgrid angezeigt werden. naja so das alles, da ich wirklich nicht viel ahnung von delphi habe und auch krankheitsbedingt nicht oft im unterricht anwesend war hab ich nicht das gute verständniss dafür. könnte mir dabei einer helfen??? wäre wichtig und SEHR nett von euch, ihr könnt das ja gut wenn ich so eure open source programme sehe... mfg Sebastian |
DP-Maintenance
Dieses Thema wurde von "Christian Seehase" von "Delphi .NET" nach "Sonstige Fragen zu Delphi" verschoben.
Dreht sich nicht um .NET |
Re: Notenprogramm
Also zum Speichern würde ich inis benutzen. Das geht erstmal am einfachsten.
![]() ![]() Für die Eingabe der Noten solltest du Edits nehmen. Sollen die Noten mitt + und - eingetragen werden? (wenn ja ins Punktesystem umwandeln) Oder als Punktesystem (also von 1 bis 15) oder wie? Beim Durchschnitt ist zu beachten, dass du als operator zum rechnen div benutzen musst, solange du bei Ganzzahlen bleibst. Für die Menübar gibt es eine Standardkomponente [dp]Menüleiste[/dp] Generell ist die DP aber nicht dazu da, um sich seine Hausaufgabe machen zu lassen :wink: |
Re: Notenprogramm
ich hab ja auch nich gemeint das ihr das machen sollt, ich hab lediglich um hilfe gebeten.
also die komponenten die ich benötige sprich edit felder button und navigationsleiste das bekomm ich ja alles so hin, ich bleib gerade nur bei dem array hängen, ich weiß nich wie das funktionieren soll der er alle daten vorläufig im array speichert... |
Re: Notenprogramm
soweit ich weiß
müsste das mit dem array so gehen:
Delphi-Quellcode:
Is schon nen bissl spät un der kaffe wirkt net mehr, also plz net böse sein wenns net geht aber so müsste es imho funzen
var
noten: Array of Array of Integer; x, y, i: Integer; begin //wie viele Schüler? //----------------- x:=4; Y:=??? //Anzahl der Schüler SetLength(noten, x, y); //----------------- //zuweisen der Noten zu den Schülern //----------------- for i:=0 to y do begin noten(0, i):=IntToStr(Edit3.Text); //die Englisch-Note noten(1, i):=IntToStr(Edit4.Text); //die Deutsch-Note noten(2, i):=IntToStr(Edit5.Text); //die mathe-Note noten(3, i):=IntToStr(Edit6.Text); //die Informatik-Note end; //----------------- end; [edit] sry, habs noch nen bissl übersichtlicher gemacht -hoff ich zumindest^^-[/edit] mfg GimbaR |
Re: Notenprogramm
Es wäre sinnvoll ein achtes Edit-Feld einzufügen, indem die Anzahl der Schüler eingetragen wird.
dann klappt das mit dynamischen zuweisen in einem array einfacher, denn imho wird bei SetLength() alle vorhandenen "einträge" zurückgesetzt. |
Re: Notenprogramm
Zitat:
|
Re: Notenprogramm
Zitat:
wozu braucht man dann dynamische arrays? nee, ich glaub schon, dass das für mehrere Schüler ist sonst reichts ja einfach vier integer-variablen zu deklarieren... |
Re: Notenprogramm
Zitat:
Zitat:
|
Re: Notenprogramm
Ich würde jedem Schüler ne ID (bzw nen zahl^^) zuweisen und das ganze dann in ner ini abspeichern.
sozusagen:
Code:
hab abba atm net die zeit daraus nen richtigen source zu chreiben, vllt am dienstag...
[Schüler1]
id=0 mathe=2 inf=1 deutsch=2 englisch=6 [Schüler2] id=1 mathe=3 inf=4 deutsch=1 englisch=2 |
Re: Notenprogramm
also die schüleranzahl ist offen denk ich mal, mann sollte soviele benutzer anlegen dürfen wie man will, und das is gerade der punkt den ich nicht verstehe, und das mit dem tsavedialog1.execute das krieg ich auch nicht hin, kann es sei da sich zu delphi 7 bei delphi 2005 da etwas geändert hat???
|
Re: Notenprogramm
also mein programm hab ich jetzt soweit das es funktioniert. jetzt muss ich nur noch die werte die ich eingebe in ein array umwandeln, da fehlt mir noch die verständniss für. so desweiteren habe ich auch das stringgrid fertig und die daten kommen auch darein.
![]() desweiteren sieht meine speicherfunktion für die tabelle so aus:
Delphi-Quellcode:
diese funktioniert aber nicht richtig und ich frag mich warum, er sagt auch immer das er savedialog1 nicht kennt...
var
BackupName: string; FileHandle: Integer; StringLen: Integer; X: Integer; Y: Integer; begin if SaveDialog1.Execute then begin if FileExists(SaveDialog1.FileName) then begin BackupName := ExtractFileName(SaveDialog1.FileName); BackupName := ChangeFileExt(BackupName, '.BAK'); if not RenameFile(SaveDialog1.FileName, BackupName) then raise Exception.Create('Unfähig eine Aushilfsdatei zu erschaffen.'); end; FileHandle := FileCreate(SaveDialog1.FileName); FileWrite(FileHandle, Sg.ColCount, SizeOf(Sg.ColCount)); FileWrite(FileHandle, Sg.RowCount, SizeOf(SG.RowCount)); for X := 0 to SG.ColCount - 1 do begin for Y := 0 to SG.RowCount - 1 do begin StringLen := Length(SG.Cells[X,Y]); FileWrite(FileHandle, StringLen, SizeOf(StringLen)); FileWrite(FileHandle, SG.Cells[X,Y], stringlen(SG.Cells[X,Y])); end; end; FileClose(FileHandle); end; |
Re: Notenprogramm
jetzt hab ich noch ein problem, wie komm ich an den quelltext vom savedialog dran?? der öffnet immer einen Test, sprich das speichern unter menü...
|
Re: Notenprogramm
Zitat:
Wozu brauchst du denn den Quelltext davon? Und: es ist ein SaveDialog, da wird natürlich ein "Speichern unter---"-Dialog aufgerufen. Wenn ich dich jetzt falsch verstenden habe, dann ignorier diesen Beitrag und verdeutliche bitte deine Frage. Dann ist die Chance größer, dass die geholfen wird. Und setze bitte jetzt den Quelltext in die Delphi-Tags, so lässt er sich nur schlecht lesen ;-) |
Re: Notenprogramm
arg, meine erinnerungen von selphi 7 sind nen bissel durcheinander gekommen, stimmt ja ich muss die save funktion ja in dem entsprechenden button oder ähnliches einbaune..nagut somit hat sich das erledigt..danke für die gedächtniss stütze^^
|
Re: Notenprogramm
also den quellcoe gerade hab ich im mit dem button delphi code eingefügt, also zwischen (delphi.../delphi) jetzt keine komentare ich weiß sind falsche klammern wolt es nur veranschaulichen*g*
nunaj also wie gesagt der savedialog funktioniert nicht mit dem quellcode den ich oben angegeben habe wobei er funktionieren müsste es sei denn ich habe eine uses funktion vergessen einzufügen. desweiteren funktioniert das öffnen auch nicht so ganz, hier ist der quellcode. dort meldet er mir den fehler allocmem kennt er nicht und freemem. wurden diese geändert?
Delphi-Quellcode:
var
iFileHandle: Integer; iFileLength: Integer; iBytesRead: Integer; Buffer: PChar; i: Integer begin if OpenDialog1.Execute then begin try iFileHandle := FileOpen(OpenDialog1.FileName, fmOpenRead); iFileLength := FileSeek(iFileHandle,0,2); FileSeek(iFileHandle,0,0); Buffer := PChar(AllocMem(iFileLength + 1)); iBytesRead := FileRead(iFileHandle, Buffer^, iFileLength); FileClose(iFileHandle); for i := 0 to iBytesRead-1 do begin Sg.RowCount := Sg.RowCount + 1; Sg.Cells[1,i+1] := Buffer[i]; Sg.Cells[2,i+1] := IntToStr(Integer(Buffer[i])); end; finally FreeMem(Buffer); end; end; |
Re: Notenprogramm
Zitat:
imho ist diese zeile doch überflüssig mfg GimbaR |
Re: Notenprogramm
also der teil den du rauskopiert hast ist dafür das eine neue datei erstellt wird wenn noch keine vorhanden ist. wenn schon einmal gespeichert wurde speichert er sofort wieder unter dem dateinamen ab, sprich die dialogbox geht nicht auf sondern er nimmt sofort die datei vom vorherigen male.
|
Re: Notenprogramm
also, ich hab mal wieder ein paar fortschritte gemacht, mein array hab ich jetzt so aufgebaut.
zuerst habe ich einen neuen Datentyp erstellt:
Delphi-Quellcode:
Danach habe ich mir so gedacht, das wenn ich auf den speichern knopf drücke müsste er ja die daten dann in das array speichern:
TSchuler = Record
Name,Vorname,Klasse : string; NoteI,NoteD,NoteE,NoteM : integer; NotenD : extended; end;
Delphi-Quellcode:
so siehts bisher dann aus, nun kommt die fehlermeldung Objektverweis wurde nicht auf Objektinstanz festgelegt.
private
count: integer; ... var Form1: TForm1; TSchulerID: array of Tschuler; durch:extended; n:integer; Implementation ..... procedure TForm1.Button1Click(Sender: TObject); begin TSchulerID[count].Name := edit1.text; TSchulerID[count].Vorname := edit2.text; TSchulerID[count].Klasse := edit3.text; TSchulerID[count].NoteD := STRtoInt(edit4.text); TSchulerID[count].NoteE := STRtoInt(edit5.text); TSchulerID[count].NoteM := STRtoInt(edit6.text); TSchulerID[count].NoteI := STRtoInt(edit7.text); TSchulerID[count].NotenD := STRtoInt(edit8.text); count:= count+1; ... procedure TForm1.FormCreate(Sender: TObject); begin n:=1; count:=0; end; da ich von delhpi 2005 nur die englische hilfe habe (trial) hab ich natürlich auch nichts zu objektverweis oder instanz gefunden. könnte mir vielleicht einer sagen ob ich irgendwo vergessen habe was richtig zu deklarieren? mfg raccoon |
Re: Notenprogramm
hmm, ich komm nciht weiter der fehler bleibt und bleibt, ich habe schon versucht das array ein bisschen zu überlisten indem ich aus dem TSchulerID noch einen eigenen datentyp erzeugt habe und dann eine weitere Variable SchulerId erstellt, geht auch nicht also ich bin ratlos, ich sitzt jetzt schon 5 stunden an diesem einen fehler und das wurmt^^
mfg raccoon |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz