AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Code aus Button in andere unit auslagern

Ein Thema von moperswings · begonnen am 29. Jan 2007 · letzter Beitrag vom 30. Jan 2007
Antwort Antwort
Seite 3 von 3     123   
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#21

Re: Code aus Button in andere unit auslagern

  Alt 29. Jan 2007, 16:29
Könnt Ihr dann nicht einmal - für alle - ein Bsp. schreiben, wie die "beste" Lösung für dieses Problem aussehen würde. Ich bin ja bestimmt nicht der einzige, der viel Code in einer Unit vermeiden möchte, um den Durchblick zu behalten!
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#22

Re: Code aus Button in andere unit auslagern

  Alt 29. Jan 2007, 17:00
Hallo,

ich bin ja eigentlich auch ein grosser Freund von Beispielen. Aber hier liegt die Sache etwas anders. Es gibt verschiedene Wege, das liegt am jeweiligen Problem. Es gibt hier nicht unbedingt die Lösung.

Aber es gibt auf jeden Fall eine Sache, die man auf jeden Fall einhalten sollte. Keine Zirkelschlüsse, das ist das Wichtigste. Und auch nicht mal kurz, um mal eben etwas zutesten. Klare Antwort: nein. Sag einfach nein, mach dein Gehirn an und überlege erst, bevor du anfängst. Wenn man einen Zirkelschluss braucht, hat man schon etwas falsch gemacht, so einfach ist das.

Nun ist es natürlich so, das ein Programm langsam immer größer wird und irgendwann erkennt man dann, dass man die Übersicht verliert. Eigentlich sollte man schon gleich anfangen und richtig sortieren bzw. auslagern. Ok, manchmal ist man selber überrachst, was da noch alles dazukommt.

Trotzdem der einfachste Weg ist immer noch Trennung von Eingabe, Verarbeitung und Ausgabe (eben EVA). Alles was mit der Verarbeitung zu tun hat, hat nichts in einer Formularunit zu suchen. Diese Routinen sollte man auslagern. In der Formularunit werden dann die Inhalte aus den Formularelementen an diese Routinen übergeben. So einfach kann das sein.
Und jetzt kommt mir nicht mit irgendwelchen konstruierten Beispielen, dann dafür gibt es auch immer ein ordentliches Beispiel.

Eigentlich sollten diese Vorgehenweisen schon zum Erfolg führen. Allerdings gibt es eben auch hier wieder Ausnahmen. Und ab Delphi5 gibt es eben auch für diese Ausnahmen noch eine weitere Möglichkeit. Nämlich Frames. Da kann man eben auch noch sein Formular in logische Bereiche unterteilen, die dann jeweils eine eigene Unit bekommen.
Und wenn man dann beide Vorgehenweisen ausgiebig nutzt, sollte man keine Platzprobleme mehr haben.

Wie gesagt, Beispiel ist zwar möglich. Aber es gibt nicht das Beispiel für alles was auftreten kann. Vielleicht kannst du noch etwas konkreter werden, dann werde ich es eventuell auch

Gruss
Thorsten
  Mit Zitat antworten Zitat
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#23

Re: Code aus Button in andere unit auslagern

  Alt 29. Jan 2007, 17:10
Ich arbeite an einem Fragebogen, benutze ein Form und meine Fragen bringe ich TabSheets unter.
Speichern möchte ich das ganz als *.csv um die Daten in SPSS zu importieren. Beim Speichern sammeln sich meine Komponenten in der writeln an und deshalb wollte ich den Inhalt meiner Speicher-Buttons auslagern.
Das ist im Moment das Problem, vor dem ich stehe!
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#24

Re: Code aus Button in andere unit auslagern

  Alt 29. Jan 2007, 17:38
Wie sieht den deine Datenstruktur aus?
  Mit Zitat antworten Zitat
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#25

Re: Code aus Button in andere unit auslagern

  Alt 29. Jan 2007, 17:44
Ich gehe halt von Tabsheet zu TabSheet, Frage meine Antworten ab und am Ende wird das ganze in iener Zeile gespeichert. Der nächste Datensatz wird dann angehangen. Ich habe ca. 50 Radiogroups, 20 Edit, 20 Memos und 4 Checkboxen aus denen sich ein Datensatz zusammensetzt.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#26

Re: Code aus Button in andere unit auslagern

  Alt 29. Jan 2007, 18:16
Das heisst also du hast deine Fragen da fest reingemeisselt.
Du hast dir also keine Gedanken gemacht, was für Antworten es so geben könnte.
Also zum Beispiel: Einfache Antwort (ja/nein), Mehrfachauswahl (Radiobutton, Checkbox), Kreuzungstabellen, Freie Eingabe, ...
Also eine Struktur die dir deine Frage + Antwortmöglichkeiten zusammenbaut.
Damit ist dein Fragebogen aber ziemlich festgenagelt. Was ist wenn dir morgen noch eine Frage einfällt? Dann machst du ein neues TabSheets auf und baust dir dafür auch wieder alles zusammen? Findest du das elegeant?
Wäre es nicht sinnvoller eine Datei mit Fragen zuhaben. Diese Datei müsste dann auch den Frage-Typ beinhalten und eventuell die möglichen Antworten. Vermutlich würde sich da eine einfache XML-Struktur für eignen. Wie sieht den die Datei aus, die du an SPSS geben möchtest? So weit ich weiss sind da die Antworten die Spalten und die Zeilen sind die Einzelnen Personen.
Da stellt sich mir dann gleich die Frage, wie bzw. wann du deine Einzelnen Antwortzeilen speicherst? Und an dieser Stelle schliesst sich der Kreis und wir sind wieder bei dir Frage, wie deine Datenstruktur aussieht? Zur Zeit denke ich hast du keine.

Stimmen meine Annahmen soweit...

Gruss
Thorsten
  Mit Zitat antworten Zitat
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#27

Re: Code aus Button in andere unit auslagern

  Alt 30. Jan 2007, 15:47
Der Begriff "fest reingemeisselt" gefällt mir sehr gut.
Also, meine Fragen stehen!
Ich gehe Tabsheet für Tabsheet durch. Meine Antwortmöglichkeiten sind durch Radiogroups vorgegeben und für freie Antworten benutze ich Edits oder Memos, je nach dem, was ich brauche. Speichern mache ich ganz klassisch mit writeln.
Das alles funktioniert ja auch soweit! Das Problem ist nur, das ich jetzt 1000 Zeilen in einer unit habe und deshalb wollte ich den Code auslagern. Da Du den Lösungsvorschlag von Michael80 nicht optimal gefunden hast, hätte ich halt gern ein Beispiel, wie Du das Problem lösen würdest - das ist alles!
Mit xml in Verbindung mit Delphi habe ich noch nichts gemacht und von Frames habe ich auch keine Ahnung!

Viele Grüsse, moperswings
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#28

Re: Code aus Button in andere unit auslagern

  Alt 30. Jan 2007, 18:44
Hallo moperswings,

schau Dir doch mal den Tip von SirThornberry näher an...
Ich habe es noch nicht genutzt, aber Du kannst damit m.E. Quelltextteile einfach in eine andere Datei schreiben und diese wird vom Compiler so verwendet, als würde er in Deiner Pas stehen. Deine Unit würde dadurch deutlich kürzer und Du bräuchtest keine Schnittstelle definieren. Der Nachteil: Du hättest viele weitere Dateien, in die Dein Quelltext aufgeteilt ist.

Andere Variante: Du erzeugst eine neue Unit MeineProceduren und definierst dort vollständige Proceduren mit allen nowendigen Übergabeparametern...

-> procedure Proc1(Hin:String;var Zurueck1:String; var Zurueck2:Integer);

Die Unit MeineProceduren bindest Du in Deine HauptUnit ein und rufst die gewünschten Proceduren auf. Ist natürlich etwas Schreibarbeit, aber sauber.
Und evtl. kannst Du einige Proceduren mehrfach benutzen.

Stahli
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz