AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi IStrings richtig verarbeiten(OLE/COM Server)
Thema durchsuchen
Ansicht
Themen-Optionen

IStrings richtig verarbeiten(OLE/COM Server)

Ein Thema von TTF · begonnen am 18. Jul 2014 · letzter Beitrag vom 21. Jul 2014
Antwort Antwort
Benutzerbild von TTF
TTF

Registriert seit: 19. Mai 2013
70 Beiträge
 
Delphi XE4 Enterprise
 
#1

IStrings richtig verarbeiten(OLE/COM Server)

  Alt 18. Jul 2014, 17:36
Ich habe einen OLE Automation Server in Delphi geschrieben der soweit auch ganz gut funktioniert.
Der Server sieht so aus:
server.png

Der Client so:

client.png

SendText funktioniert ausgezeichnet. Bei GetText liegt das Problem. Ich bekomme folgende Fehlermeldung:

error.png

Beim Server hab ich folgenden Code, um dem Client den Text des Server zu schicken:

Delphi-Quellcode:
function TMyCom2.Get_Text() : IStrings;
begin
   GetOleStrings(unit1.Form1.Memo1.Lines, Result);
end;
Beim Client diesen, um das 'Geschickte' zu empfangen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  aStrings : IStrings;
begin
  aStrings.Add(Server.Get_Text);
  SetOleStrings(Memo1.Lines, aStrings);
end;
Ich wäre sehr froh, wenn jemand sich den Code oder sogar die beiden Projekte(Anhang) ansehen könnte und mir sagen könnte, wo der Fehler liegt.

Danke schonmal im Voraus
Angehängte Dateien
Dateityp: zip ComServer.zip (1,98 MB, 5x aufgerufen)
Dateityp: zip ComClient.zip (2,01 MB, 6x aufgerufen)
Quidquid id est, timeo perfossores machinae computatoriae et dona ferentes...

Geändert von TTF (18. Jul 2014 um 17:38 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: IStrings richtig verarbeiten(OLE/COM Server)

  Alt 18. Jul 2014, 17:42
Wo kommt diese Fehlermeldung, am Server oder am Client? Passiert etwas bei der Gegenstelle?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: IStrings richtig verarbeiten(OLE/COM Server)

  Alt 18. Jul 2014, 18:10
Also das hier
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  aStrings : IStrings;
begin
  aStrings.Add(Server.Get_Text);
  ...
end;
stinkt doch irgendwie. aStrings zeigt irgendwo im Speicher hin. Das ist auf jeden Fall falsch.

Mal so ein Schuss ins Blaue (habe mir nicht den Anhang angesehen)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  aStrings : IStrings;
begin
  aStrings := Server.Get_Text;
  SetOleStrings(Memo1.Lines, aStrings);
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (18. Jul 2014 um 18:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von TTF
TTF

Registriert seit: 19. Mai 2013
70 Beiträge
 
Delphi XE4 Enterprise
 
#4

AW: IStrings richtig verarbeiten(OLE/COM Server)

  Alt 18. Jul 2014, 18:16
@mkinzler: Ehrlich gesagt weiss ich es nicht da ja beide Anwendungen gleichzeitig laufen.

@Sir Rufo: Hmm ich denke auch, dass der Fehler in diesen beiden Zeilen liegt, aber ich habe keine Ahnung wie ich es besser machen könnte. Deshalb frag ich ja...
Quidquid id est, timeo perfossores machinae computatoriae et dona ferentes...
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: IStrings richtig verarbeiten(OLE/COM Server)

  Alt 18. Jul 2014, 18:18
@mkinzler: Ehrlich gesagt weiss ich es nicht da ja beide Anwendungen gleichzeitig laufen.

@Sir Rufo: Hmm ich denke auch, dass der Fehler in diesen beiden Zeilen liegt, aber ich habe keine Ahnung wie ich es besser machen könnte. Deshalb frag ich ja...
Wie ist denn das Server.Get_Text definiert?
(Sitze am Tablet und möchte jetzt nicht erst den Rechner starten, ist eh schon warm genug)

So?
function Get_Text : IStrings; .

Ok, habe es gerade gesehen - Lösung siehe mein vorheriger Beitrag
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (18. Jul 2014 um 18:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von TTF
TTF

Registriert seit: 19. Mai 2013
70 Beiträge
 
Delphi XE4 Enterprise
 
#6

AW: IStrings richtig verarbeiten(OLE/COM Server)

  Alt 18. Jul 2014, 18:22
@Sir Rufo: Genau das habe ich als Erstes gemacht. Aber Delphi erkennt Get_Text nicht als IString sondern als OleVariant, also hab ich versucht das irgendwie umzumappen..

@Sir Rufo 2.: Ich bin am Smartphone(Hab den Code nicht vor mir)...nachher start ich dann den Rechner
Quidquid id est, timeo perfossores machinae computatoriae et dona ferentes...
  Mit Zitat antworten Zitat
Benutzerbild von TTF
TTF

Registriert seit: 19. Mai 2013
70 Beiträge
 
Delphi XE4 Enterprise
 
#7

AW: IStrings richtig verarbeiten(OLE/COM Server)

  Alt 18. Jul 2014, 18:56
nichts(Versehen)
Quidquid id est, timeo perfossores machinae computatoriae et dona ferentes...

Geändert von TTF (19. Jul 2014 um 12:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#8

AW: IStrings richtig verarbeiten(OLE/COM Server)

  Alt 18. Jul 2014, 20:59
Ein OleObject ist wie ein aufgemotzter Variant und du kannst direkt auf Methoden und Property des enthaltenen Interfaces zugreifen.
(nur die Codevervollständigung weiß natürlich noch nicht, was da später mal drin sein wird)


Wenn das IStrings.Add dieses Interface als Parameter versteht, dann darfst du das gerne "ummappen",
aber in das aStrings solltest du vorher auch eine Instanz rein tun, von welcher du diese Methode dann aufrufen kannst.

Oder du weist einfach dieses Result (OleVariant) der Interfacevariable zu, bzw. castest den OleVariant mit AS (wobei ich jetzt nicht genau weiß ob das wirklich geht).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von TTF
TTF

Registriert seit: 19. Mai 2013
70 Beiträge
 
Delphi XE4 Enterprise
 
#9

AW: IStrings richtig verarbeiten(OLE/COM Server)

  Alt 18. Jul 2014, 23:08
Wenn das IStrings.Add dieses Interface als Parameter versteht, dann darfst du das gerne "ummappen",
aber in das aStrings solltest du vorher auch eine Instanz rein tun, von welcher du diese Methode dann aufrufen kannst.
Den zweiten Teil(Instanz reintun?) verstehe ich nicht ganz. Kannst du mir bitte ein Codeschnipsel posten? Vielleicht versteh ich dann besser was du meinst
Quidquid id est, timeo perfossores machinae computatoriae et dona ferentes...
  Mit Zitat antworten Zitat
Benutzerbild von TTF
TTF

Registriert seit: 19. Mai 2013
70 Beiträge
 
Delphi XE4 Enterprise
 
#10

AW: IStrings richtig verarbeiten(OLE/COM Server)

  Alt 21. Jul 2014, 09:41
Ich hab das Ganze jetzt als BStr also WideString versucht. Das Resultat ist das gleiche, nur eine andere Fehlermeldung und etwas weniger Code

Fehlermeldung:

Unzulässige Parameteranzahl

Code:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  Memo1.Lines.Add(Server.Get_Text());
end;
Ich frage mich einfach.. Ich schaff es nicht eine einzige Zeile ohne Fehler zu schreiben
Wäre echt froh, wenn jemand mir dabei helfen könnte.
Quidquid id est, timeo perfossores machinae computatoriae et dona ferentes...

Geändert von TTF (21. Jul 2014 um 11:13 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:53 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