AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Syntaxprobleme mit einer Methode

Ein Thema von Luckie · begonnen am 6. Nov 2006 · letzter Beitrag vom 7. Nov 2006
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von St.Pauli
St.Pauli

Registriert seit: 26. Dez 2004
351 Beiträge
 
Delphi 7 Personal
 
#11

Re: Syntaxprobleme mit einer Methode

  Alt 6. Nov 2006, 15:33
Also das von Khabarakh funktioniert bei mir... Vieleicht liegts daran, wo du das ganze aufrufts?
Gruß St.Pauli
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#12

Re: Syntaxprobleme mit einer Methode

  Alt 6. Nov 2006, 15:47
Achso, jetzt ist die Erleuchtung gekommen . Zwar lässt sich zum Initialisieren von Feldern Code wie "(static) double foo = Math.Sqrt(3);" direkt in den Klassenrumpf packen, alles andere muss aber schön in Methoden verpackt sein, so unübersichtlich ist C# nun auch wieder nicht . D.h., alle anderen Initialisierungen schiebst du in einen Konstruktor der Klasse (dort landen die Feldinitialisierungen letzten Endes ebenfalls), hier wohl am Ehesten der statische.
Code:
static Form1()
{
    Db4o.Configure().AddAlias(new TypeAlias("Demo_db4o.Person","Demo_db4o.Person, Demo_db4o"));
}
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#13

Re: Syntaxprobleme mit einer Methode

  Alt 6. Nov 2006, 15:54
Hallo Luckie,

ich habe mir die DLL mal mit Roeder's Reflector genauer angesehen. Dabei stelle ich fest:
Zitat:
public sealed class Config4Impl : Configuration, DeepClone, MessageSender, FreespaceConfiguration
public static Configuration Configure();
Wenn ich dies richtig lese, ist Configuration eine (feste) Instanz der Klasse Config4Impl und wird mit Configure() erzeugt. Also benötigst Du in der Tat:
Code:
... Db4o.Configure() ...
Zu dieser Klasse gibt es folgende Methode:
Code:
public void AddAlias(Alias alias);
Die Deklaration der Alias-Klasse und auch von TypeAlias habe ich (noch) nicht gefunden. Es spricht aber alles dafür, dass das richtige Verfahren so lautet:
Code:
Db4o.Configure().AddAlias(new Alias(...));
Vielleicht teilst Du das Verfahren auf, um im Debugger Details zu sehen:
Code:
Config4Impl cfg;
cfg = Db4o.Configure();
Alias xxx = new TypeAlias(...);
cfg.AddAlias(xxx);
Viel Erfolg! Jürgen

PS. Den Hinweis von Khabarakh verstehe ich nicht, oder ich würde es anders empfehlen. Eigene Initialisierungen - also auch die Config-Maßnahmen - können in den Konstruktor gelegt werden, aber nach InitializeComponents().
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#14

Re: Syntaxprobleme mit einer Methode

  Alt 6. Nov 2006, 17:06
Zitat von Jürgen Thomas:
Die Deklaration der Alias-Klasse und auch von TypeAlias habe ich (noch) nicht gefunden.
Der Reflector liefert dir eigentlich alles auf dem Präsentiertellerchen, weswegen ich meine Code auch in 10 Sekunden korrigieren konnte:
com.db4o.Db4o Erweitern -> Configure(), Klick auf Parameter -> com.db4o.config.Configuration, Erweitern -> AddAlias, Klick auf Parameter -> com.db4o.config.Alias, Erweitern -> Derived Types -> com.db4o.config.TypeAlias

Zitat:
PS. Den Hinweis von Khabarakh verstehe ich nicht, oder ich würde es anders empfehlen. Eigene Initialisierungen - also auch die Config-Maßnahmen - können in den Konstruktor gelegt werden, aber nach InitializeComponents().
Bisher war ich mir in diesem Thread nicht so sicher, aber bei diesem Thema hat mir mein "Objektorientierungssinn" (he, das muss ich mir merken ^^ ) eigentlich vollkommen zugestimmt.

Fassen wir einmal zusammen:
a) Wir rufen die Methode einer statischen Klasse auf.
b) Wir übergeben nur konstante Parameter.

c) Aus a) und b) folgt, dass die Instanz der Form für den Aufruf unwichtig ist.
d) Aus a) und b) können wir außerdem zusammen mit der etwaigen Kenntnis des Sinnes der Methode folgern, dass wir die Methode zu einer beliebigen Zeit in beliebigem Kontext aufrufen können.
e) Aus dem Sinn ergibt sich außerdem zusammen mit b), dass wir die Methode genau einmal im gesamten Verlauf der aktuellen AppDomain aufrufen sollten.
f) Und da der Aufruf wohl nicht zum Spaß allein existiert, sollten wir ihn vor der Methode von Form1 durchführen, die den Alias benötigt. Wie aber in d) gesagt ist die genaue Zeit, wann nun "davor" ist, irrelevant.

Daraus, besonders e), folgt für mich, dass das Ganze nur in einem statischen Konstruktor oder einem Singleton stattfinden kann. Und laut f) sollte es uns auch nicht stören, wenn dieser schon ein paar Schritte vor dem Instanzen-Konstruktor aufgerufen, was bei einem Singleton mit lazy Initialization nicht der Fall wäre.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#15

Re: Syntaxprobleme mit einer Methode

  Alt 7. Nov 2006, 09:07
Zitat von St.Pauli:
Also das von Khabarakh funktioniert bei mir... Vieleicht liegts daran, wo du das ganze aufrufts?
http://www.michael-puff.de/files/mecker.gif

Das war's.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:44 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