| Autor |
Beitrag |
Grimsch
      
Beiträge: 34
|
Verfasst: Do 03.09.09 06:44
Moin moin
ich habe da ein Problem bezüglich Records in Delphi... und zwar muss ich mir bis nächste Woche die Grundstruktur von Records selbst beigebracht haben und dies mit einem kleinen Programm vorstellen.
Mein Problem dabei ist, dass ich zwar schon weiß was Records sind usw. aber nirgends im Internet gefunden habe wie man ein ganz einfaches und simples Programm erstellt. Desweiteren hab ich auch nirgends Quelltexte gefunden, welche Verknüpfungen mit Buttons, Panels usw beinhalten. Also ganz kurz und knapp: Ich weiß nicht wie ich einen Record zum "Laufen" bringe.
Würde mich über Eure Hilfe sehr freuen!
MfG
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Do 03.09.09 07:39
Der Klassiker für eine Records-Beispielanwendung ist wohl eine Mini-Adressverwaltung.
Mach Dir einen Record, der die Daten enthält (Name, Vorname, Straße, etc). Und speichere diese Records in einem Array.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Do 03.09.09 11:06
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
Grimsch 
      
Beiträge: 34
|
Verfasst: Do 03.09.09 12:18
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:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type TForm1 = class(TForm) private public end; type Tschueler = record name: string; nummer:integer; end;
var Form1: TForm1; schueler: Tschueler;
implementation
{$R *.dfm}
begin schueler.name:= 'Peter'; Peter:= schueler.name;
end. |
erstmal danke für die schnelle antwort aber noch fehlt mir da irgendwie etwas.
1. ich weiß noch nicht genau wie ich die reihenfolge machen soll. ist sie soweit in ordnung?
2. die zeile Peter:= ... da wird mir peter als undeclared identifier angezeigt, da ich diesen ja nicht als variable angegeben habe. Außerdem ist das ganze auch wenn es funktioniert doch nichts weiter als quelltext, welcher nichts mit der oberfläche macht zB durch buttonklick die daten in edits wiederzugeben.
Soetwas würde ich gerne machen können
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 03.09.09 12:24
Was die Zeile mit der Zuweisung an Peter bewirken soll, entzieht sich meinem Verständnis. Aber zu den Edits: Du hast ja in Deinem Record mehrere verschiedene Datenfelder (Name und Nummer). Um diese nun auszugeben, musst Du sie doch nur abfragen (ähnlich den Properties einer Klasse).
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TDeinForm.ButtonZeigenClick(Sender: TObject); begin edtName.Text := schueler.Name; edtNummer.Text := IntToStr(schueler.Nummer); end; |
So einfach ist das im Prinzip, zumal Du derzeit ja nur einen einzigen Record hast.
|
|
Grimsch 
      
Beiträge: 34
|
Verfasst: Do 03.09.09 12:24
Nersgatt hat folgendes geschrieben : | Der Klassiker für eine Records-Beispielanwendung ist wohl eine Mini-Adressverwaltung.
Mach Dir einen Record, der die Daten enthält (Name, Vorname, Straße, etc). Und speichere diese Records in einem Array. |
Gibt es denn nichts ohne Array? Unser Kurs wurde in verschiedene Arbeitsgruppen unterteilt. Wir sollen records bearbeiten, während eine andere Gruppe Arrays bearbeitet, also beides sogesagt distanziert voneinander.
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Do 03.09.09 12:30
Naja, wenn man eine Adressverwaltung möchte, dann muss man ja die Daten in irgendeiner Listenform halten. Da drängt sich für die Anfänger das Array geradezu auf. Es klingt für mich so, als würde euerer Lehrer gar nicht verlangen, dass ihr so tief einsteigt, sondern eher, dass er das Ziel verfolgt, hinterher das Wissen der beiden Arbeitsgruppen zu verknüpfen.
Also mach ein ganz simples Recordbeispiel (z.B. mit nur einer Adresse), ohne die Daten irgendwie listenmäßig zu speichern.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
Grimsch 
      
Beiträge: 34
|
Verfasst: Do 03.09.09 12:45
|
|
Regan
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Do 03.09.09 12:53
Ich würde dir erstmal Komplexe Datentypen im DT vorschlagen.
Grimsch hat folgendes geschrieben : | | wenn ich dies nun so bei mir eingebe erscheint die Fehlermeldung, dass edtName nicht definiert ist. Was nun?^^ Und was hat das edt für eine bedeutung? |
Wenn man Komponenten auf das Formular zieht, sollte man diese (der Übersichtlichkeit halber) einheitlich umbenennen. So besteht der Name (nicht der Text oder Caption) einer Komponente meistens aus zwei Teilen:
| Zitat: | | <Präfix><Verwendung> |
Wenn du also ein Editfeld hast, dann könnte das Editfeld eben: edtName oder edName statt Edit1 heißen. Damit weißt du im Quelltext sofort, dass es sich um ein Eingabefeld handelt, in dem der Name stehen soll.
|
|
Grimsch 
      
Beiträge: 34
|
Verfasst: Do 03.09.09 13:06
ah ok danke
habe nun auch immerhin schon eine gewisse idee wie ich das machen kann aber hab immernoch ein problem und zwar folgenede:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.Button1Click(Sender: TObject); begin edit1.text:= schueler.name; edit2.text:=IntToStr(schueler.nummer);
end; |
hiermit werden ja die daten aus den Edits eingelesen. Nun habe ich vor sie in 2 Labels wieder auszugeben nur weiß ich nicht genau wie.
Mein ansatz war:
Delphi-Quelltext 1: 2:
| schueler.name:= label1.caption; schueler.nummer:= label2.caption; |
allerdings funktioniert das auch nicht. ich weiß mir fehlen so einige grundkenntnisse >.<
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 03.09.09 13:14
"Funktioniert nicht" ist keine Fehlerbeschreibung. Aber die Nummer ist eine integer, der kannst Du keinen String direkt zuweisen, sondern musst ihn zuerst in eine Zahl wandeln.
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Do 03.09.09 13:17
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Do 03.09.09 14:54
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Grimsch 
      
Beiträge: 34
|
Verfasst: Do 03.09.09 14:55
ah ok super vielen dank nu funktioniert das erste kleine programm
werde die nächsten tage bestimmt noch ein paar fragen haben aber vorerst bin ich zufrieden  hätte nicht gedacht, dass mir in einem forum so geholfen werden kann =)
allerdings was mich stutzig macht ist folgendes:
Delphi-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:
| type Tschueler = record name: String; nummer: string; end; var Form1: TForm1; schueler: Tschueler; implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin schueler.name:= edit1.Text; schueler.nummer:= edit2.text; end;
procedure TForm1.Button2Click(Sender: TObject); begin label1.Caption:= schueler.name; label2.Caption:=schueler.nummer; end;
end. |
ich habe oben anstatt nummer: integer nun nummer: string geschrieben aber es funktioniert trotzdem :O könnte sich da später ein fehler einschleichen? oder kann ich es so lassen? ansonsten hätte ich gegen einen anderen lösungsvorschlag nichts einzuwenden 
Zuletzt bearbeitet von Grimsch am Do 03.09.09 15:00, insgesamt 1-mal bearbeitet
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Do 03.09.09 14:57
Gerne wieder neue Fragen, aber immer wieder in einem neuen Thread. 
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: Do 03.09.09 15:31
Naja es passt ja zum Topic, daher beantworte ich die Frage mal ^^
Also Strings im Record sind kein Problem, allerdings muss man wissen dass Strings eigentlich nur aus einer Adresse im Speicher bestehen (Wo dann der String liegt). Daher kann man ein solches Record nicht abspeichern.
So lange du aber nicht in Dateien schreibst kannst du das so machen.
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 03.09.09 16:00
Wenn die Nummer wirklich nummerisch ist, sollte man auch einen passenden Typ nehmen. Allerdings muss man dann bei der Ein- bzw. Ausgabe hin- und herkonvertieren (IntToStr, TryStrToInt), aber das ist ja kein großartiges Hindernis.
|
|