Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Tmemo in DLL (https://www.delphipraxis.net/154345-tmemo-dll.html)

MiniMax 7. Sep 2010 16:29

Tmemo in DLL
 
Tag Zusammen,
ich bin mir sicher ich mache einen Fehler:

Ich mcöhte in einer Dll eine Memo erzeugen nur kommt beim starten der dll immer etwas mit kein übergeordnetes fenster??
Was mache ich falsch? Bitte schaut euch dass mal an:

Delphi-Quellcode:
library latlontowaypointlist;

{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss sich in der
  ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt-
  Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die
  Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle
  Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die
  sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur
  Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL.
  Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String-
  Informationen als PChar- oder ShortString-Parameter übergeben. }


uses
  Classes, SysUtils,
  StdCtrls, math,forms,sharemem;


  type TWaypoint = record
       Event_Flag : String[1];
       holdtime: String[50];
       height: String[50];
       Kurs:String[50];
       Entfernung:String[20];
       Pos_Alt_Lat:String[50];
       Pos_Alt_Lon:String[50];
       Pos_Lat:String[50];
       Pos_Lon:String[50];
       ToleranceRadius:String[10];
       end;


var

      pointnr: 0000..9999;
      waypoint: Twaypoint;
      Memo1:tmemo;
      Kurs : real;             //' Der Kurs zwischen Start und Ziel
      Entfernung : real;       //' Die Entfernung zwischen Start und Ziels
      ToleranceRadiusw,holdtimew,heightw : real;


{$R *.res}

(...)

procedure ini(); register;
begin
  Memo1:= TMemo.create(nil);
  Memo1.clear;
  Memo1.lines.add('<Waypoints>');
  Memo1.lines.add('</Waypoints>');
end;

(...)

Luckie 7. Sep 2010 16:39

AW: Tmemo in DLL
 
Und wo ist das Formular? Ein Memo ohne Formular zum Anzeigen macht wohl kaum Sinn.

himitsu 7. Sep 2010 16:43

AW: Tmemo in DLL
 
Für XML eignen sich XML-Bibliotheken recht gut.

Und wozu soll das Memo denn gut sein, bzw. würde eine TStringList geeigneter sein?
(aktuell wird das Memo ja nirgends angezeigt)

blauweiss 7. Sep 2010 16:55

AW: Tmemo in DLL
 
Hallo MiniMax,

hat jetzt nichts mit Deinem Problem zu tun, aber Du mußt außerdem darauf achten, ShareMem als ERSTE unit unter uses... aufzuführen. Siehe Hinweistext am Anfang der library....
Also z.B.

Delphi-Quellcode:
uses
  ShareMem,
  Classes, SysUtils,
  StdCtrls, math, forms;
Gruß,
blauweiss

MiniMax 7. Sep 2010 17:01

AW: Tmemo in DLL
 
Hallo Zusammen,
ich benutzte das Memo, da ich dort die Strings am Einfachsten speichern kann?!? Bei Stringlist kann ich doch nicht das selbe mit machen wie mit dem Memo? Ich nutze Stringreplace am meisten und dann noch savetofile ?? Angezeigt soll nix werden!

Würde in der Dll das mit stringlist besser gehen auch ihne dieses .create(nil) schrott?

shmia 7. Sep 2010 18:16

AW: Tmemo in DLL
 
Du kannst in deiner DLL ohne weiteres kompilizierte Kurs-, Entfernungs- und Ortberechnungen einbauen.
Das würde auf jeden Fall Sinn machen, denn dann könnten auch andere Programme diese Kernfunktionen, die viel mathematisches Knowhow erfordern, nützen.

Was aber eher schlecht ist, wenn deine DLL irgendwelche visuellen Steuerelemente (Controls) verwendet.
Das macht nämlich erhebliche Probleme, da dann zwei Instanzen der VCL existieren, die nicht zusammen kommen.
Ich würde auch das Laden und Speichern von Konfigurationsdateien nicht in die DLL packen,
sondern alle notwendigen Daten der DLL von "Aussen" also aus der Anwendung übergeben.

Wo man jetzt genau die Trennlinie zwischen Anwendung und DLL zieht hängt immer auch vom Einzelfall ab.

Luckie 7. Sep 2010 19:45

AW: Tmemo in DLL
 
Mit einer Stringliste kannst du alles machen, was man auch mit einem TMemo machen kann, denn die Eigenschaft Lines ist auch nur ein Nachfahre von TStrings.

MiniMax 8. Sep 2010 09:58

AW: Tmemo in DLL
 
Cool es hat geklappt! Aber Irgendwie gehts dass entladen net?? Es bleibt im Taskmaneger drinne ??? Was mache ich falsch?
Bei Oncloase und Ondestroy miener Form rufe ich ne Procedure auf, die sagt, Stringlist.free; ??? Was is falsch

MiniMax 8. Sep 2010 19:00

AW: Tmemo in DLL
 
Niemand eine Idee?

MiniMax 9. Sep 2010 14:12

AW: Tmemo in DLL
 
Ich bitte euch helft mirbitte!!!

Ich brauche da ne Lösung


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 Uhr.
Seite 1 von 2  1 2      

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