Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   dll's und komponenten einer übergebenen form (https://www.delphipraxis.net/2707-dlls-und-komponenten-einer-uebergebenen-form.html)

Blizzard 3. Feb 2003 19:00


dll's und komponenten einer übergebenen form
 
Hi,
also vorweg erst mal etwas zu meinem Porjekt:
ich hab in meinem projekt ne form "fmbrowser", auf der befindet sich ein stringgrid "sglinks" und noch ein paar andere sachen.
so jetzt bin ich gerade dabei eine dll zu schreiben die auf diesen stringgrid zugreifen soll, dazu übergebe ich der funktion der dll die fmbrowser form als tForm (wenn ich sie direkt als TfmBrowser übergebe muss ich der dll die pfade zu allen dateien die vielleicht auch über andere forms mit der fmbrowser form verknüpft sind, sagen was ich ned will bzw mir zu umständlich ist).

So jetzt zum problem ich
ich versuche jetzt in der dll den stringgrid zu bekommen um etwas in ihn zu schreiben, das schaut bisher in etwa so aus:
Code:
function getresults(browser:tform):boolean; stdcall;
var
  grid:tstringgrid;
begin
  ...
  grid:=TStringGrid(browser.findcomponent(pchar('sglinks')));

  grid.cells[0,0]:=pchar('test');
  ...
end;
Das Problem ist das er mir bei dem FindComponent Teil mit einer Zugriffsverletzung aussteigt und ich keine ahnung habe woran das liegen könnte. Ich hab auch schon versuch das ganze erst in eine tcomponent zu nehmen dann auf nil zu überprüfen und dann erst umzuwandeln da steigt er aber trotzdem bei findcomponent aus. :(

MfG
Blizzard

jbg 3. Feb 2003 19:10

1. Wieso wandelst du eigentlich alle Strings in PChar um?
2. Hast du dir auch mal den Text durchgelesen, der ganz am Anfang deines DLL-Quellcodes steht, und von Delphi automatisch geschrieben wird?

Blizzard 3. Feb 2003 19:33

Genau deswgen wandel ich alle strings in pchar um, damit kann man soweit ich weis das einbinden der BORLNDMM.DLL vermeiden so stehts ja auch bei dem text am anfang der dll in der letzten zeile.

jbg 3. Feb 2003 20:30

Hast du dir den Text auch genau durchgelesen? Du übergibst ein Objekt als Parameter!

Blizzard 3. Feb 2003 20:46

eigentlich dachte ich, das könnte ich durch das umwandeln in pchar austrixen da die "rückumwandlung" erst in der entsprechenden prozedure stattfindet. ich hab auch eben versucht was passiert wenn ich die sharemem einbinde das hat aber auch nix gebracht. bekomme immernoch die gleiche fehlermeldung. daran scheints also ned zu liegen.
es funktioniert auch wenn ich den stringgrid direkt übergebe anstatt der form dann kann ich mittels pchar direkt (ohne sharemem) auf die zellen zugreifen und hineinschreiben.
allerdings will ich das ned da es sich nicht nur um den stringgrid handelt sondern auch noch um en paar edit felder und so und ich will ned alle einzeln übergeben.

jbg 3. Feb 2003 20:58

Hast du ShareMem auch im Hauptprogramm als allererste Unit eingebunden?

Delphi-Quellcode:
program Project1;
uses
  ShareMem,
  Forms,
  Unit1 in 'Unit1'
...
Delphi-Quellcode:
library Project2;
uses
  ShareMem, SysUtils, Forms, ...;
...

Blizzard 3. Feb 2003 21:09

jup hab ich, ich hab es soagr um sicherzugehen in der die dll aufrufen form nochmal eingebunden

jbg 3. Feb 2003 22:51

Ich habe das ganze jetzt mal ausprobiert und es funktioniert ohne Fehler.
Bist du dir auch sicher, dass das StringGrid den Namen 'sglinks' trägt? Prüfe doch einfach mal, ob Grid nach FindComponent den Wert nil hat.

Blizzard 4. Feb 2003 15:47

Und wie hast du das jetzt gemacht?
ich hab's gerade nochmal versucht und den namen und so nochmals überprüft aber es klappt immer noch ned
wenn ich genau das gleiche in der form selber mache geht's (habs hin und her kopiert) aber in der dll gehts ned :(
und das mit dem auf nil überprüfen hab ich auch schon probiert. soweit kommt er bei mir gar nicht erst selbst wenn ich das nur in ne variable vom typ tcomponent schreiben lasse steigt er mir beim aufrufen von findcomponent aus :(

Blizzard 4. Feb 2003 16:20

OK jetzt versteh ich gar nix mehr, hab delphi nach rechnerneustart auch neu gestartet und auf einmal gehts mit genau dem gleichen quelltext mit dem's vor 15min noch ned ging. obwohl ich jedes mal das ganze projekt neu compiliert habe :?: :?

Also Danke jbg für deine Hilfe auch wenn's sich jetzt irgendwie in luft aufgelöst hat.

MfG
Blizzard


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 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