Einbinden von DLLs

Rund um die LCL und andere Komponenten
Antworten
debeye
Beiträge: 12
Registriert: Mi 20. Mär 2013, 23:10

Einbinden von DLLs

Beitrag von debeye »

Hallo Leute,

ich möchte gerne die PORT.DLL in mein Projekt einbinden und hab mir dazu im Internert auch was angelesen. Das ist ja eigentlich extrem einfach. Ich demonstriere mal, wie das bei mir aussieht.

Code: Alles auswählen

 
{...}
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    ProgressBar1: TProgressBar;
    Timer1: TTimer;
    Function OPENCOM(S:PCHAR):Integer; stdcall; external 'PORT.dll'; //Das hier ist das Entscheidende!
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    F: TextFile;
    { private declarations }
  private
 
  public
 
    { public declarations }
  end; 
So weit, so gut. Theoretisch holt er sich ja jetzt aus der DLL die Funktionalität und ich brauche unter implementation nichts mehr zu schreiben , richtig?

Dann kommen wir jetzt zum Problem: Kaum auf F9 gedrückt und schon:

Code: Alles auswählen

unit1.pas(23,49) Error: Fields cannot appear after a method or property definition, start a new visibility section first
Warum passiert das??? Ich hab diese Zeile schon überhall hingeschrieben: Unter private, public und halt oben ins default ding, aber immer das Gleiche. Ohne diese Deklaration kompiliert das Programm einwandfrei durch. Ich mach das erste Mal was mit DLLs und habe keine Ahnung warum das nicht so funktioniert, wies überall steht! :(

PORT.dll liegt übrigens im Anwendungsverzeichnis, also im gleichen Ordner, wie die exe und alles andere auch.

Danke für die Hilfe!

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Einbinden von DLLs

Beitrag von theo »

Das gehört nicht in die Klasendefinition hinein, das ist wie eine normale Funktion, nicht eine Mehode von TForm1.

Also hinter die Def. von TForm1.

debeye
Beiträge: 12
Registriert: Mi 20. Mär 2013, 23:10

Re: Einbinden von DLLs

Beitrag von debeye »

Danke, ich wusste das es irgendwas triviales sein muss...

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Einbinden von DLLs

Beitrag von MmVisual »

Nehme doch lieber "synaser", damit hast du COM Port zugriff und brauchst keine extra DLL (mit deren Problemen) einbinden.
EleLa - Elektronik Lagerverwaltung - www.elela.de

debeye
Beiträge: 12
Registriert: Mi 20. Mär 2013, 23:10

Re: Einbinden von DLLs

Beitrag von debeye »

Bei dem Vorschlag werd ich hellhörig :mrgreen: . Also defakto ist mein einziges Problem den COM-Port zu öffnen. Ich will nämlich einzig und allein Strings empfangen, die der COM mir sendet, dafür kann ich ihn auch behandeln, wie ein Textdokument. Das Problem ist, dass das Gerät an der Schnittstelle (GPS Maus) nicht von anfang an sendet. Derzeit muss ich immer zunächst das mitgelieferte Programm starten, damit mein Programm Daten bekommen kann.

Beim Einbinden von Synaser kommt mir allerdings folgender Fehler in die Quere:

Code: Alles auswählen

unit1.pas(9,32) Fatal: Can't find unit SynaSer used by Unit1 
Wie kann ich das Ding denn richtig einbinden?

Danke!

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Einbinden von DLLs

Beitrag von theo »

lpk kompilieren, dann die Abhängigkeit von dem Package ins Projekt aufnehmen.
Projekt - > Projektinspektor -> Hinzufügen -> Neue Anforderung -> laz_synapse

debeye
Beiträge: 12
Registriert: Mi 20. Mär 2013, 23:10

Re: Einbinden von DLLs

Beitrag von debeye »

Danke, Synaser funktioniert gut! Hab noch ein weiteres Problem, aber das passt nun wirklich nichtmehr unter diese überschrift!

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Einbinden von DLLs

Beitrag von Komoluna »

Hallo debeye

Erstell doch einfach ein neues Thema und verlinke es hier...

MFG Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Antworten