![]() |
Brauche Starthilfe für OOP mit Class und Methode
Hallo,
will mich von der proceduralen Programmierung endlich lösen und brauche etwas Starthilfe Hier mein Problem mit dem ich beginnen möchte: Was möchte ich mit dem Programm machen? Wenn ich in die EditFeldern des Form1:TForm E_Name:TEdit einen PersonenNamen und E_geb:TEdit dessen Geburtsdatum eingebe so soll eine Methode im Hintergrund eine ID dieser Person aus Geburtsdatum und NamensInitialen generieren und diese in das EditFeld E_ID:TEdit schreiben. in der Form
Delphi-Quellcode:
Hier nun mein CodeVersuch
E_Name.Text:='Meier, Hans';
E_geb.Text:='12.11.44' E_ID.Text='121144MH-0'
Delphi-Quellcode:
Aber der Code macht es nicht,
unit EB_Foto_Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,...; type TSatz = object PName: string; geb: string; ID: string; procedure bilde_ID; end; ... TForm1 = class(TForm) E_Name: TEdit; E_ID: TEdit; E_geboren: TEdit; E_Inhalt: TEdit; E_Datum: TEdit; ... end; var Form1: TForm1; Satz: TSatz; implementation uses ...; {$R *.dfm} ... procedure TForm1.FormCreate(Sender: TObject); var i: integer; begin ... Satz:=TSatz.create // IDE meckert diese Stelle an !! ... end; procedure TForm1.E_gebChange(Sender: TObject); begin Satz.geb := Text; E_ID.Text := Satz.ID; end; procedure TForm1.E_NameChange(Sender: TObject); begin Satz.PName := Text; E_ID.Text := Satz.ID; end; ... //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Methoden von TSatz procedure TSatz.bilde_ID; var s0, s1, s2, s3, s4, s5, s6, s7: string; n0, n1, n2, n3, n4, n5, n6, n7: integer; begin s0 := geb; // hier kommt das E_geb hinein n0 := length(s0); n1 := pos('.', s0); s1 := copy(s0, 1, n1 - 1); s4 := copy(s0, n1 + 1, n0 - n1); n2 := pos('.', s4); s2 := copy(s4, 1, n2 - 1); s3 := copy(s4, n2 + 1, 6); s0 := PName; // hier kommt das E_Name hinein n5 := pos(', ', s0); s5 := copy(s0, 1, 1); s6 := copy(s0, n5 + 2, 1); if length(s1) = 1 then s1 := '0' + s1; if length(s2) = 1 then s2 := '0' + S2; if length(s3) > 2 then s3 := copy(s3, length(s3) - 1, 2); s7 := s1 + s2 + s3 + s5 + s6 + '-0'; ID := s7; // hier stünde ja das Satz.ID bereit end; //.............................................................................. end. erstens meckert die IDE diese Strlle
Delphi-Quellcode:
an
Satz:=TSatz.create // IDE meckert diese Stelle an !!
und wenn ich diese Stelle fälschlicherweise weglasse, so erscheint im E_ID:TEdit nach den Eingaben in E_Name:TEdit und E_geb:TEdit keine ID Ja, ich weiss, diese Frage ist megablöd, aber ich bin und war eben ein eingefleischter proceduraler Programmierer. Das soll sich ja jetzt ändern Danke für die Hilfe E. B. |
Re: Brauche Starthilfe für OOP mit Class und Methode
Hi,
ich hab mal folgenden Lösungsvorschlag für Dich:
Delphi-Quellcode:
unit Unit3;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm3 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; TSatz = class(TObject) private FGeb: String; FName: String; function GetID: string; public property Name: String read FName write FName; property Geb: String read FGeb write FGeb; property ID: string read GetID; end; var Form3: TForm3; implementation {$R *.dfm} { TSatz } function TSatz.GetID: string; var tmpDatum: String; tmpName: String; tmpInitial: String; begin tmpDatum := StringReplace(Geb, '.', '', [rfReplaceAll]); tmpName := Trim(Name); tmpInitial := tmpName[1] + Copy(tmpName, Pos(',', tmpName) + 2, 1); Result := tmpDatum + tmpInitial + '-0'; end; procedure TForm3.Button1Click(Sender: TObject); var Satz: TSatz; begin Satz := TSatz.Create; Satz.Name := 'Rauber, Manuel'; Satz.Geb := '07.09.90'; ShowMessage(Satz.ID); end; end. ![]() |
Re: Brauche Starthilfe für OOP mit Class und Methode
Naja, ich würde Geb als TDate definieren, aber war ja auch nur ein Beispiel, gelle? :mrgreen:
|
Re: Brauche Starthilfe für OOP mit Class und Methode
Natürlich als TDate, aber mit einem String ging es schneller :tongue:
Geht ja auch nur um das Prinzip. Wie es EWeiss EccoBravo dann macht, ist ja ihm selbst überlassen. |
Re: Brauche Starthilfe für OOP mit Class und Methode
Wie EWeiss es macht, weiß er glaub ich selbst, EccoBravo hatte gefragt :lol: :tongue:
|
Re: Brauche Starthilfe für OOP mit Class und Methode
Ach Mist, sorry EccoBravo :mrgreen:
|
Re: Brauche Starthilfe für OOP mit Class und Methode
okidoki, kein Problem.
die Sache scheint ansich zu laufen, werde damit (StringReplace Trim, ... ) noch etwas herumprobieren Anstelle .PName stand in meinem Programm .Name, und diesen hat er im DP-Forum Code blau gemacht (weiss nicht warum), deshalb habe ich ihn hier anders genannt. Grüße und Danke E. B. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 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-2025 by Thomas Breitkreuz