Autor Beitrag
ase
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 203

Gentoo, Windows 9X, ME, 2k, NT, XP
Delphi 7 Prof., PHP 5 (Eclipse 3 SDK)
BeitragVerfasst: Di 06.05.03 12:26 
Servus.

Die überschrift sagts ja bereits.

Seit Tagen stöbere ich im msdn rum um suche was zu Monikers raus. Man findet auch ne Menge aber nicht das was ich suche, BEISPIELE.

Vielleicht weiß ja jemand wie man mit Monikers umgeht und hat soetwas schonmal gemacht, sowie auf Client und Server Seiten.

Ich möchte einfach ein simples Beispiel aus dem hervor geht wie man Moniker einsetzen kann.

Ich hab auch selbst schon so einiges probiert und auch schon was rausgefunden. Wenn ich eine Klasse (libary) entwerfe die IPersistFile und IPersistStorage implementiert, dann kann ich diese Klasse mittles Moniker laden. Das funktioniert aber nur wenn die Klasse im Root des Storage Files abgelegt ist. Wenn ich aber folgendes Szenario habe funktioniert das nicht:

c:\test.tst!Meine_Klasse

Wie kann ich dann meine Klasse aus der SubStorage laden? File- und Item Moniker kombinieren hat nicht funktioniert.

Irgendwelche vorschläge, Idee, Tutorials oder andere Hilfen sind sehr willkommen. Wenn ich selber genug darüber weiß, dann werde ich denke ich ein Tutorial schreiben um mal etwas Licht ins Dunkel zu bringen.


Danke schonmal im Voraus.
Moritz M.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Di 06.05.03 14:17 
Tschulidgung, aber was sind Moniker?
ase Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 203

Gentoo, Windows 9X, ME, 2k, NT, XP
Delphi 7 Prof., PHP 5 (Eclipse 3 SDK)
BeitragVerfasst: Di 06.05.03 15:42 
servus

Moniker? Sie geben deinen Daten innerhalb einer Datei einen "Namen". Wenn du nen Word Dokument hast und da ne Excel Tabelle einbettest, dann wird beides in die DOC Datei gespeichert. Mit Hilfe von Monikern kannst du nun nur die Excel Tabelle öffnen, ohne Word zu starten. Oder was ganz anderes:

ausblenden 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:
26:
27:
28:
29:
30:
Var bc: IBindCtx;
      m: IMoniker;
      iu: IUnknown;
      Doc: WordDocument;
Begin
   OleCheck(CreateBindCtx(0, bc));
   OleCheck(CreateFileMoniker('c:\xxx.doc'#0, m));

   OleCheck(m.BindToObject(..., IUnknown, iu));
 
   // Ole32 hat jetzt die doc datei geöffnet und "bemerkt", dann sie die
   // classid von Word enthält. also startet Ole32 nun Word und gibt mir
   // einen IUnknown zeiger darauf zurück.

   OleCheck(iu.QueryInterface(WordDocument, Doc));

   // Nun hat man einen Zeiger auf Word. Bis dahin noch nichts
   // besonderes aber man kann jetzt ohne weiteres aus der c:\xxx.doc
   // ne c:\xxx.xls oder aber auch http://delphi-forum.de machen.
   // moniker starten dann immer die entsprechende anwendung und
   // geben den benötigten zeiger zurück.
   // zellbereich in excel: c:\parts.xls!A7:H6, bekommst du nen ICellRange
   // interface zurück.

  bc := Nil;
  m := Nil;
  iu := Nil;
  Doc := Nil;
End;
{ nicht getestet }


das ganze ist aber bitte nicht mit shellexecute oder so zu verwechseln was ja bekanntlich auch ne anwendung startet.

Wie man die Dinger benutzt weiß ich (siehe oben). Wie man son objekt definiert was man so laden und speichern kann auch aber ich kann es ebend nur mit "kompletten dateien". ich will das es mit teilen einer datei auch klappt. sowieso ist das ganze Persistente Zeugs von MS ziemlich undurchsichtig für mich.

dachte hier weiß einer weiter.



ase