![]() |
Ausgabe eines geladenen Records in Memofeldern
Ich schon wieder ;),
Und zwar habe ich folgendes Problem. Ich möchte Daten aus Editfeldern in ein Record speichern: Record:
Delphi-Quellcode:
Einlesen in den Record:
Bilddaten = record
RTitel, RAutor, RThema, RAufnahmekontext, RBlende, RBZ1, RBZ2, RBG1, RBG2, RAuflösung, RSchlagworte, RBeschreibung, RDat1, RDat2, RDat3, RAFormat: string[100]; end;
Delphi-Quellcode:
Nun habe ich keine Ahnung wie man den Record speichert, hab das mal so probiert:
procedure Einlesen;
var Titel, Autor, Thema, Aufnahmekontext, Blende, BZ1, BZ2, BG1, BG2, Auflösung, Schlagworte, Beschreibung, Dat1, Dat2, Dat3, AFormat: Bilddaten; begin Titel.RTitel:= Form3.Edit13.Text; Autor.RAutor:= Form3.Edit2.Text; Thema.RThema:= Form3.Edit3.Text; Aufnahmekontext.RAufnahmekontext:= Form3.Edit4.Text; Blende.RBlende:= Form3.Edit1.Text; BZ1.RBZ1:= Form3.Edit8.Text; BZ2.RBZ2:= Form3.Edit9.Text; BG1.RBG1:= Form3.Edit5.Text; BG2.RBG2:= Form3.Edit6.Text; Auflösung.RAuflösung:= Form3.Edit10.Text; Schlagworte.RSchlagworte:= Form3.Edit7.Text; Beschreibung.RBeschreibung:= Form3.Memo1.Text; Dat1.RDat1:= Form3.ComboBox1.Text; Dat2.RDat2:= Form3.ComboBox2.Text; Dat3.RDat3:= Form3.ComboBox3.Text; AFormat.RAFormat:= Form3.ComboBox6.Text; end;
Delphi-Quellcode:
Datensatz habe ich vorher global als Datensatz: Bilddaten deklariert.
procedure Speichern;
var datei: file of Bilddaten; begin if Form1.Savedialog1.Execute then begin try assignfile(Datei,Form1.Savedialog1.FileName); rewrite(datei); write(datei, Datensatz); finally close(datei); end; end; end; Wie kann ich das Ganze(, wenn es überhaupt richtig gespeichert wurde) jetzt wieder durch Laden der Datei, in dem der record eigentlich gespeichert werden sollte, in den Editfeldern oder auch einem Memofeld ausgeben? Später will ich allerdings nicht nur ein Record speichern, sondern mehrere, bräuchte da also einen Array... Es handelt sich um ein Bilddatenverwaltungsprogramm, bei dem jeder User also "seine" Datei mit den gespeicherten Bilddaten wieder aufrufen, also mehrere Bilddaten verwalten können soll. Ich hoffe ihr könnt mir helfen :) Liebe Grüße Giertier |
Re: Ausgabe eines geladenen Records in Memofeldern
erstmal:
Delphi-Quellcode:
Das schreiben ist soweit ok. Lesen kannst du mit Reset(file) und Read.
procedure Einlesen;
var Datensatz:Bilddaten; //wahrscheinlich aber nicht lokal hier definieren, damit du nachher speichern kannst. begin Datensatz.RTitel:= Form3.Edit13.Text; Datensatz.RAutor:=...; ... end; |
Re: Ausgabe eines geladenen Records in Memofeldern
Danke für deine schnelle Antwort :-D
Hab ich gemacht :) Und wie bekomm ich die gelesenen Daten jetzt in mein Memofeld zurück :gruebel: (Ich bin gerade einfach zu blöd sorry :wall:) EDIT: Müsste in der Datei dann nicht irgendwas drin stehen, wenn ich die mit dem Editor z.b. öffne? Weil die ganz leer ist, nicht mal irgendwelche komischen Zeichen...) |
Re: Ausgabe eines geladenen Records in Memofeldern
... aber besser das close() gar nicht erst angewöhnen,
besser ist closefile() zu verwenden |
Re: Ausgabe eines geladenen Records in Memofeldern
Zitat:
Neben dem richtigen Close(File), hast du auch die gleiche Variable "Datensatz" verwendet? |
Re: Ausgabe eines geladenen Records in Memofeldern
Also ich hab jetzt hier noch mal die ganze Unit mit den Prozeduren, die ich fürs Hauptprogramm nutze aufgelistet
Delphi-Quellcode:
Und wenn ich die Datein geladen hab, hätte ich das gerne in etwa so hier:
unit Pfadkopie;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, jpeg, ExtDlgs; type Bilddaten = record RTitel, RAutor, RThema, RAufnahmekontext, RBlende, RBZ1, RBZ2, RBG1, RBG2, RAuflösung, RSchlagworte, RBeschreibung, RDat1, RDat2, RDat3, RAFormat: string[100]; end; procedure Pfad; procedure Einlesen; procedure Speichern; procedure Laden; procedure Schreiben; var Datensatz: Bilddaten; implementation uses unit1, unit3; procedure Pfad; var Zieldatei: string; begin if Form1.OpenPictureDialog1.Execute then begin Form3.close; ZielDatei:= Form1.OpenPictureDialog1.FileName; Form1.Image2.Picture.LoadFromFile(Zieldatei); Form1.image2.Stretch:= true; Form1.image2.proportional:=true; Form1.image2.show; Form1.Enabled := false; Form3:= TForm3.Create(Application); Form3.Show; Form3.Label20.Caption:= ExtractFileExt(Zieldatei); Form3.Label17.Caption:= Zieldatei; end; end; procedure Einlesen; begin Datensatz.RTitel:= Form3.Edit13.Text; Datensatz.RAutor:= Form3.Edit2.Text; Datensatz.RThema:= Form3.Edit3.Text; Datensatz.RAufnahmekontext:= Form3.Edit4.Text; Datensatz.RBlende:= Form3.Edit1.Text; Datensatz.RBZ1:= Form3.Edit8.Text; Datensatz.RBZ2:= Form3.Edit9.Text; Datensatz.RBG1:= Form3.Edit5.Text; Datensatz.RBG2:= Form3.Edit6.Text; Datensatz.RAuflösung:= Form3.Edit10.Text; Datensatz.RSchlagworte:= Form3.Edit7.Text; Datensatz.RBeschreibung:= Form3.Memo1.Text; Datensatz.RDat1:= Form3.ComboBox1.Text; Datensatz.RDat2:= Form3.ComboBox2.Text; Datensatz.RDat3:= Form3.ComboBox3.Text; Datensatz.RAFormat:= Form3.ComboBox6.Text; end; procedure Speichern; var datei: file of Bilddaten; begin if Form1.Savedialog1.Execute then begin try assignfile(Datei,Form1.Savedialog1.FileName); rewrite(datei); write(datei, Datensatz); finally closefile(datei); end; end; end; procedure Laden; var Datei: file of Bilddaten; begin if Form1.OpenDialog1.Execute then begin assignfile(datei, Form1.OpenDialog1.FileName); reset(datei); read(Datei, Datensatz); closefile(datei); end; end;
Delphi-Quellcode:
Also würde im Memofeld gerne den Datensatz ausgeben, den ich geladen habe.
Form1.Memo1.Text:=
'Titel: '+Datensatz.RTitel+#13#10+#13#10+ 'Aufnahmedatum: '+Datensatz.RDat1+Datensatz.RDat2+Datensatz.RDat3+#13#10+#13#10+ 'Autor: '+Datensatz.RAutor+ #13#10+#13#10+'Thema: '+Datensatz.RThema+#13#10+#13#10+ 'Aufnahmekontext: '+Datensatz.RAufnahmekontext+#13#10+#13#10+ 'Blende: '+Datensatz.RBlende+' mm'+#13#10+#13#10; ... |
Re: Ausgabe eines geladenen Records in Memofeldern
Sieht doch gut aus. Wenn du jetzt die Reihenfolge der Prozeduraufrufe richtig machst, sollte es klappen.
|
Re: Ausgabe eines geladenen Records in Memofeldern
Vielen, vielen Dank!
Genau daran lags, ich hab Einlesen nach Speichern geschrieben :wall: Danke, nochmal an alle, die mir hier geholfen haben :) |
Re: Ausgabe eines geladenen Records in Memofeldern
Aber auch wenn es jetzt funktioniert, vielleicht noch zwei Hinweise:
Die Bezüge innerhalb der Unit auf verschiedene Formulare und deren Controls in anderen Units sind "unschön" und fehleranfällig. In einer Mini-Anwendung mag das funktionieren. Versuche doch einmal das anders zu lösen. Globale Variablen sollte man ebenfalls möglichst vermeiden. Mach' dir auch darüber Gedanken, wie dies in deinem Fall anders zu realisieren wäre. |
Re: Ausgabe eines geladenen Records in Memofeldern
Zitat:
Dann habe ich jetzt noch das Problem, dass ich nun nicht nur einen einzigen Record in der Datei speichern möchte, sondern eben mehrere Datensätze. Sowas löst man ja sicher mit einem Array of Record, oder? Wie stelle ich es aber an, dass nicht jedes mal, wenn ich in einem Formular (bei mir eben Form3) auf Speichern klicke, nicht die ganze Datei neu geschrieben wird und dann wieder nur ein Datensatz drin steht, sondern eben nur der neue hinzugefügt wird? Lasse ich dann einfach das rewrite weg? Wenn ich jetzt sowas mache wie
Delphi-Quellcode:
Dann haben meckern ja die im Record deklarierten Strings wie RTitel usw. wieder rum, dass sie keine Klasse oder eben keinen Record haben, weil Datensatz ja jetzt als Array und nicht mehr direkt als Bilddaten deklariert ist.
Datensatz: Array of Bilddaten
Liebe Grüße Giertier |
Re: Ausgabe eines geladenen Records in Memofeldern
Moin, Moin Giertier.
Das sind ja nun mehrere Dinge, die angepackt werden müssten. Da du offenbar noch nicht so richtig fit mit Delphi bist, stellt sich nun die Frage wo der dringenste Optimierungsbedarf liegt: In der Programmstruktur oder der Aufgabenstellung, auch mehrere Datensätz zu speichern. Ich schlage vor, zunächst die Programmstruktur zu verbessern, sonst wird alles mit jeder zusätzlichen Codezeile noch unübersichtlicher und verworrener. Das Handling mehrerer Datensätze im RecordArray ist dann eher eine Marginalie. Damit wir dir besser helfen können, ist es wohl das Beste, wenn du den kompletten Source zur Verfügung stellst um im Detail nachzuvollziehen, welche Aufgaben die vorhandenen Module/Formulare haben. |
Re: Ausgabe eines geladenen Records in Memofeldern
Heyho ^^
find ich super, dass einem hier so geholfen wird :) Also, ich will ja nicht, dass ihr die ganze Aufgabe für mich löst ;), ich wills ja auch verstehn, aber wäre wirklich super, wenn ihr mir an diversen Stellen weiterhelfen könntet, für die ich einfach zu sehr Noob auf diesem Gebiet bin. Also hier mal der Code Unit eins, das Startformular. ![]()
Delphi-Quellcode:
Unit 2, Bildschirm für spätere erweiterte Suche (Hab ich mich bis jetzt noch gar nich drum gekümmert)
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, jpeg, unit2,unit3, Pfadkopie, ExtDlgs, GraphicEx,GifImage; type TForm1 = class(TForm) Panel1: TPanel; GroupBox2: TGroupBox; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; GroupBox3: TGroupBox; Button8: TButton; Button9: TButton; Edit1: TEdit; ListBox1: TListBox; Label13: TLabel; Button10: TButton; Image1: TImage; Panel2: TPanel; Image2: TImage; OpenPictureDialog1: TOpenPictureDialog; Label14: TLabel; Memo1: TMemo; Memo2: TMemo; SaveDialog1: TSaveDialog; OpenDialog1: TOpenDialog; procedure Button10Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin close; end; procedure TForm1.Button9click(Sender: TObject); begin Form2:= TForm2.Create(Application); Form2.Show; end; procedure TForm1.Button3Click(Sender: TObject); begin Pfad; end; procedure TForm1.Button10Click(Sender: TObject); begin Laden; Schreiben; end; end. ![]()
Delphi-Quellcode:
Unit 3, Formular für die Eingabe der Bilddaten:
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm2 = class(TForm) Edit13: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit10: TEdit; Label1: TLabel; Label2: TLabel; ComboBox1: TComboBox; ComboBox2: TComboBox; ComboBox3: TComboBox; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; ComboBox6: TComboBox; Label12: TLabel; Label13: TLabel; Label14: TLabel; ComboBox8: TComboBox; Label15: TLabel; RadioGroup1: TRadioGroup; Label16: TLabel; Button1: TButton; Button2: TButton; Button3: TButton; Edit1: TEdit; Edit8: TEdit; Label17: TLabel; Edit9: TEdit; Edit11: TEdit; Label18: TLabel; Edit12: TEdit; procedure Button3Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.Button3Click(Sender: TObject); begin close; end; end. ![]()
Delphi-Quellcode:
Unit Pfadkopie
unit Unit3;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm3 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label15: TLabel; Edit13: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; ComboBox2: TComboBox; ComboBox3: TComboBox; ComboBox6: TComboBox; Button1: TButton; Button2: TButton; Button3: TButton; Label18: TLabel; Memo1: TMemo; Edit1: TEdit; Edit8: TEdit; Label19: TLabel; Edit9: TEdit; Label14: TLabel; Label20: TLabel; Edit10: TEdit; GroupBox1: TGroupBox; Label17: TLabel; ComboBox1: TComboBox; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form3: TForm3; implementation uses unit1, Pfadkopie; {$R *.dfm} procedure TForm3.Button3Click(Sender: TObject); begin Form1.enabled := true; close; end; procedure TForm3.Button1Click(Sender: TObject); begin Pfad; end; procedure TForm3.Button2Click(Sender: TObject); begin Einlesen; Speichern; close; end; end.
Delphi-Quellcode:
Das Problem mit der Suche ist jetzt erstmal noch nebensächlich. Eine verbesserte Programmstruktur wäre natürlich super und dann würde ich wie gesagt gerne das Problem anpacken, das jeder Nutzer in einer Datei seine "Datenbank" an Bilddaten Speichern und laden könnte. In den Memofeldern unten soll immer nur der derzeitig ausgewählte oder gerade eingegebene Datensatz erscheinen. Im Panel darüber das zugehörige Bild. Mit dem einen Datensatz klappt das auch recht gut. Der Button Bild aus Liste soll dann noch ein neues Formular mit einer ListBox aufrufen, aus dem der User dann den jeweilig gesuchten Datensatz über den Titel aufrufen können soll, sodass der zugehörige Datensatz (zum gewählten Titel) dann wieder in den Memofelder in Form1 zu sehen ist.
unit Pfadkopie;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, jpeg, ExtDlgs; type Bilddaten = record RTitel, RAutor, RThema, RAufnahmekontext, RBlende, RBZ1, RBZ2, RBG1, RBG2, RAuflösung, RSchlagworte, RBeschreibung, RDat1, RDat2, RDat3, RAFormat, RPfad, RFormat: string[100]; end; procedure Pfad; procedure Einlesen; procedure Speichern; procedure Laden; procedure Schreiben; var Datensatz: Bilddaten; implementation uses unit1, unit3; procedure Pfad; var Zieldatei: string; begin if Form1.OpenPictureDialog1.Execute then begin Form3.close; ZielDatei:= Form1.OpenPictureDialog1.FileName; Form1.Image2.Picture.LoadFromFile(Zieldatei); Form1.image2.Stretch:= true; Form1.image2.proportional:=true; Form1.image2.show; Form1.Enabled := false; Form3:= TForm3.Create(Application); Form3.Show; Form3.Label20.Caption:= ExtractFileExt(Zieldatei); Form3.Label17.Caption:= Zieldatei; end; end; procedure Einlesen; begin Datensatz.RTitel:= Form3.Edit13.Text; Datensatz.RAutor:= Form3.Edit2.Text; Datensatz.RThema:= Form3.Edit3.Text; Datensatz.RAufnahmekontext:= Form3.Edit4.Text; Datensatz.RBlende:= Form3.Edit1.Text; Datensatz.RBZ1:= Form3.Edit8.Text; Datensatz.RBZ2:= Form3.Edit9.Text; Datensatz.RBG1:= Form3.Edit5.Text; Datensatz.RBG2:= Form3.Edit6.Text; Datensatz.RAuflösung:= Form3.Edit10.Text; Datensatz.RSchlagworte:= Form3.Edit7.Text; Datensatz.RBeschreibung:= Form3.Memo1.Text; Datensatz.RDat1:= Form3.ComboBox1.Text; Datensatz.RDat2:= Form3.ComboBox2.Text; Datensatz.RDat3:= Form3.ComboBox3.Text; Datensatz.RAFormat:= Form3.ComboBox6.Text; Datensatz.RPfad:= Form3.Label17.Caption; Datensatz.RFormat:= Form3.Label20.Caption; Form1.Memo1.Text:= 'Titel: '+Datensatz.RTitel+#13#10+#13#10+ 'Aufnahmedatum: '+Datensatz.RDat1+Datensatz.RDat2+Datensatz.RDat3+#13#10+#13#10+ 'Autor: '+Datensatz.RAutor+ #13#10+#13#10+'Thema: '+Datensatz.RThema+#13#10+#13#10+ 'Aufnahmekontext: '+Datensatz.RAufnahmekontext+#13#10+#13#10+ 'Blende: '+Datensatz.RBlende+' mm'+#13#10+#13#10; Form1.Memo2.Text:= 'Belichtungszeit: '+Datensatz.RBZ1+'/'+Datensatz.RBZ2+'s'+#13#10+#13#10+ 'Bildgröße: '+Datensatz.RBG1+' x '+Datensatz.RBG2+''+DAtensatz.RAFormat+#13#10+#13#10+ 'Auflösung: '+Datensatz.RAuflösung+#13#10+#13#10+ 'Schlagworte: '+Datensatz.RSchlagworte+#13#10+#13#10+ 'Pfad: '+Datensatz.RPfad+#13#10+#13#10+ 'Dateiformat: '+Datensatz.RFormat; Form1.Label14.Caption:= Datensatz.RBeschreibung; Form1.Enabled:= true; end; procedure Speichern; var datei: file of Bilddaten; i: integer; begin if Form1.Savedialog1.Execute then begin try assignfile(Datei,Form1.Savedialog1.FileName); rewrite(datei); write(datei); finally closefile(datei); end; end; end; procedure Laden; var Datei: file of Bilddaten; begin if Form1.OpenDialog1.Execute then begin assignfile(datei, Form1.OpenDialog1.FileName); reset(datei); read(Datei, Datensatz); closefile(datei); end; end; procedure Schreiben; begin Form1.Image2.Picture.LoadFromFile(Datensatz.RPfad); Form1.image2.Stretch:= true; Form1.image2.proportional:=true; Form1.image2.show; Form1.Memo1.Text:= 'Titel: '+Datensatz.RTitel+#13#10+#13#10+ 'Aufnahmedatum: '+Datensatz.RDat1+Datensatz.RDat2+Datensatz.RDat3+#13#10+#13#10+ 'Autor: '+Datensatz.RAutor+ #13#10+#13#10+'Thema: '+Datensatz.RThema+#13#10+#13#10+ 'Aufnahmekontext: '+Datensatz.RAufnahmekontext+#13#10+#13#10+ 'Blende: '+Datensatz.RBlende+' mm'+#13#10+#13#10; Form1.Memo2.Text:= 'Belichtungszeit: '+Datensatz.RBZ1+'/'+Datensatz.RBZ2+'s'+#13#10+#13#10+ 'Bildgröße: '+Datensatz.RBG1+' x '+Datensatz.RBG2+''+DAtensatz.RAFormat+#13#10+#13#10+ 'Auflösung: '+Datensatz.RAuflösung+#13#10+#13#10+ 'Schlagworte: '+Datensatz.RSchlagworte+#13#10+#13#10+ 'Pfad: '+Datensatz.RPfad+#13#10+#13#10+ 'Dateiformat: '+Datensatz.RFormat; Form1.Label14.Caption:= Datensatz.RBeschreibung; end; end. Vielen Dank schonmal im Voraus für eure Weisheiten :) Liebe Grüße Giertier |
Re: Ausgabe eines geladenen Records in Memofeldern
[OT]
Da hat sich ein sachlicher Fehler eingeschlichen... Auf den letzten beiden Forms meinst du, wenn du "mm" als Einheit angibst sicherlich die Brenweite, oder? Die Blende hat i.d.R. keine Einheit und wird z.B. so angegeben: f3,5 ;) [/OT] edit: Auch wenn du es im Moment noch nicht um setzen können wirst(??), kannst du es ja mal im Hinterkopf behalten: Richtig gut wäre es, wenn du die Bilddaten aus den Exif-Metadaten eines Bildes auslesen könntest...:) |
Re: Ausgabe eines geladenen Records in Memofeldern
Hallo Giertier,
ich schau's mir heute Abend mal in Ruhe an (aber vielleicht kommen ja schon vorher von Anderen Verbesserungsvorschläge) |
Re: Ausgabe eines geladenen Records in Memofeldern
:o ich werds mir nachher auch mal ansehen. sieht aber auf jeden fall interessant aus.
|
Re: Ausgabe eines geladenen Records in Memofeldern
Zitat:
Das mit den Exif-Metadaten sagt mir leider überhaupt nix :oops: Wie gesagt, ich bin nichtso fit, was Delphi angeht :oops: Aber danke erstmal an alle dafür, dass ihr mir helfen wollt :). Find ich echt klasse. Ich freu mich auf eure Vorschläge :-) |
Re: Ausgabe eines geladenen Records in Memofeldern
Hallo Giertier.
Hab's mir jetzt einmal ausführlicher angesehen: Die Oberfläche schaut ja schon mal interessant und recht "aufgeräumt" aus - sehr schön! Nur der Programmcode ist leider (zumindest für mich) sehr schwer lesbar - und vermutlich wird es dir selbst in einiger Zeit ebenso gehen. Da sollte also unbedingt grundlegendes bereinigt werden. Das Programm bietet sicherlich eine Menge Ausbaupotential. Mit zunehmenden Fähigkeiten könnte es also sein, das du über längere Zeit das Programm weiterentwickelst. In diesem Fall ist es sehr wertvoll, wenn die Basis dafür vorbereitet ist. Sonst macht es einfach keinen Spaß daran zu arbeiten. Ich empfehle daher, dass du zunächst einmal aussagekräftige Namen für die Formulare und die darauf abgelegten Controls verwendest. Die automatische Namensvergabe macht bereits diesen sehr kurzen Quelltext zur Qual, also z.B. buSave (=Button Speichern), gbImageData (=Groupbox Bilddaten) etc. Die Namen geben also einen Hinweis, um welchen Typ von Control es sich handelt und welche Funktion damit verbunden ist - als Hobbyprogrammierer kann man da seiner Kreativität freien Lauf lassen und muss sich nicht sklavisch an einen StyleGuide halten. Wichtig ist nur, dass man die eigene Regelung auch konsequent einhält. Auch wenn es dich zunächst erst einmal nicht voranbringt: Fang erst einmal damit an. Später zahlt es sich aus und du kannst deutlich effizienter weiterarbeiten! Der nächste Schritt ist dann die Neuformulierung deiner Unit4 - daraus sollte eine eigen Klasse gemacht werden, die den kompletten FileI/O und die Datenhaltung kapselt. Diese Klasse "kennt" die übrigen Units gar nicht. Alle Form-Units übergeben die Daten an diese Klasse bzw. holen die Daten über spezielle Methoden daraus ab. Wenn du magst, helfe ich dir dabei gern weiter. // Frage an die Moderatoren: Langsam aber sicher entfernen wir uns ja nun von der ursprünglichen Fragestellung. Andererseits sind m.E. die Basics zunächst einmal wichtiger. Können wir diese schrittweise Optimierung in diesem Thread vollziehen, oder soll an dieser Stelle abgebrochen werden? |
Re: Ausgabe eines geladenen Records in Memofeldern
Hallo taaktaak,
deine Hilfe nehme ich sehr gerne in Anspruch :). Werde jetzt erstmal die Buttons und den ganzen Kram umbenennen, wie du's geschrieben hast. Bei dem Erstellen einer Klasse haperts dann schon wieder :oops: Hab ich noch nie gemacht :oops: . Ich denke auch, dass es vielleicht besser wär, das Problem jetzt nicht mehr in diesem Thread zu diskutieren, hat ja fast nichts mehr mit dem eigentlichen Thema zu tun. Liebe Grüße und vielen Dank Giertier :) |
Re: Ausgabe eines geladenen Records in Memofeldern
Hallo Giertier.
Ok, einverstanden, dann machen wir außerhalb des Threads weiter. Wir verabreden dann per PN wie der Source ausgetauscht wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:08 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