AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein dll's und komponenten einer übergebenen form
Thema durchsuchen
Ansicht
Themen-Optionen

dll's und komponenten einer übergebenen form

Ein Thema von Blizzard · begonnen am 3. Feb 2003 · letzter Beitrag vom 4. Feb 2003
Antwort Antwort
Blizzard

Registriert seit: 4. Jan 2003
88 Beiträge
 
Delphi 6 Enterprise
 
#1

dll's und komponenten einer übergebenen form

  Alt 3. Feb 2003, 20:00
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
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2
  Alt 3. Feb 2003, 20: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?
  Mit Zitat antworten Zitat
Blizzard

Registriert seit: 4. Jan 2003
88 Beiträge
 
Delphi 6 Enterprise
 
#3
  Alt 3. Feb 2003, 20: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.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4
  Alt 3. Feb 2003, 21:30
Hast du dir den Text auch genau durchgelesen? Du übergibst ein Objekt als Parameter!
  Mit Zitat antworten Zitat
Blizzard

Registriert seit: 4. Jan 2003
88 Beiträge
 
Delphi 6 Enterprise
 
#5
  Alt 3. Feb 2003, 21: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.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6
  Alt 3. Feb 2003, 21: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, ...;
...
  Mit Zitat antworten Zitat
Blizzard

Registriert seit: 4. Jan 2003
88 Beiträge
 
Delphi 6 Enterprise
 
#7
  Alt 3. Feb 2003, 22:09
jup hab ich, ich hab es soagr um sicherzugehen in der die dll aufrufen form nochmal eingebunden
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8
  Alt 3. Feb 2003, 23: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.
  Mit Zitat antworten Zitat
Blizzard

Registriert seit: 4. Jan 2003
88 Beiträge
 
Delphi 6 Enterprise
 
#9
  Alt 4. Feb 2003, 16: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
  Mit Zitat antworten Zitat
Blizzard

Registriert seit: 4. Jan 2003
88 Beiträge
 
Delphi 6 Enterprise
 
#10
  Alt 4. Feb 2003, 17: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
  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 08:59 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