AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Externen Programmcode ausführen?

Ein Thema von Master_RC · begonnen am 13. Feb 2005 · letzter Beitrag vom 18. Feb 2005
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Master_RC
Master_RC

Registriert seit: 18. Jan 2005
459 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Externen Programmcode ausführen?

  Alt 13. Feb 2005, 13:03
oh...
meine tutos waren immer nur so... naja... am rande erklärt eben

kann mir jemand evtl. nen link zu nem richtigen tuto posten?
Ein Volk ist nur soviel wert, wie es dessen Toten ehrt.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#12

Re: Externen Programmcode ausführen?

  Alt 13. Feb 2005, 13:16
Ich glaube du brauchst einfach das :


Buttton1.txt :

Button1.Caption := 'Hallo'; In Delphi :

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender : TObject);
begin
  {$Include Button1.txt} 
end;
Ist das gleiche wie

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender : TObject);
begin
  Button1.Caption := 'Hallo'; // Die Zeile kommt eben aus der Button.txt
end;
Michael
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#13

Re: Externen Programmcode ausführen?

  Alt 13. Feb 2005, 13:52
@Neutral General: Das problem bei deiner Methode ist, dass durch die zeile {$Include Button1.txt} die entsprechende Datei beim Kompilieren mit eingebunden wird, und somit fest im Quellcode steht. D.h. die Datei wird im kompilierten Programm nichtmehr benötigt, da sie fest eingebunden wurde, also haben änderungen in deren Code auch nach dem kompilieren auch keine Wirkung mehr.

So wie ich Master_RC aber verstanden habe, soll die Datei zur Laufzeit des Programmes eingebunden werden, und nicht vorher. Daher empfehle ich für diese Aufgabe, wie schon gesagt PascalScript.

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Benutzerbild von mael
mael

Registriert seit: 13. Jan 2005
391 Beiträge
 
Delphi XE3 Professional
 
#14

Re: Externen Programmcode ausführen?

  Alt 13. Feb 2005, 14:55
Zitat von Master_RC:
kann mir evtl. noch jemand erklären, wie DLLs funktionieren?
ich hab mir schon etliche tutos runtergeladen, kapiers abba einfach nicht... das geht doch gar net!
Also, eine DLL ist eine Sammlung von Funtionen/Prozeduren die man susätzlich zur EXE laden kann.
Entweder direkt beim Programmstart oder zur Laufzeit.
Z.B. ist es möglich per DLLs Plugins zu realisieren indem jede DLL die gleichen Funktionen bereitstellt (=exportiert).

Eine sehr einfache DLL für einen Musikplayer könnte so aussehen:

Delphi-Quellcode:
library WAVPlayer;

uses
  SysUtils, MMSystem;

{$R *.res}


function Play(FileName: PChar): Boolean; stdcall;
begin
  PlaySound(FileName, 0, SND_FILENAME);
end;


exports
  Play;

end.
Für MP3 müßte man die Implementierung der Play-Funktion natürlich entsprechend ändern.
Der Sinn hier DLLs zu verwenden ist, daß man das fertig Programm nachträglich erweitern kann.
Dazu muß aber die Schnittstelle gleich bleiben, also Play-Funktion muß immer vorhanden sein und die Parameter müssen gleich bleiben.

stdcall ist häufig sinnvoll da praktisch jede Programmiersprache diese Aufrufart unterstüzt. Sie ist auch die Standardaufrufsmethode für die Windows-API.

DLLs funktionieren aber nicht gut wenn man Objekte "exportieren" möchte. Innerhalb einer DLL geht das aber falls z.B. wie bei Formen man auf das Application-Objekt zugreifen muß ist dies sehr schwierig. Deswegen gibt es Packages (BPLs). Die kümmern sich um die Verwaltung die bei Objekten anfällt sind aber dafür aber nur mit Delphi nutzbar und auch von der Delphi-Version abhängig.

Hoffe das hilft etwas, Maël.
  Mit Zitat antworten Zitat
Benutzerbild von Master_RC
Master_RC

Registriert seit: 18. Jan 2005
459 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: Externen Programmcode ausführen?

  Alt 13. Feb 2005, 18:58
kewl, danke!


wie ist das dann, wenn ich eine funktion ersetzen, bzw. erweitern will, also...

kann ich z.b. die function doof() ersetzen/überschreiben/erweitern, wenn ich in der DLL auch eine function doof() reinbau, oder meckern delphi dann?

und dann noch eine der (hoffentlich) letzten fragen:
wie bau ich die DLLs dann ein?
also... mit
{INCLUDE doof.dll} wird sie ja komplett zur entwurfszeit mit eingebunden, abba ich brauch die ja zur laufzeit...
Ein Volk ist nur soviel wert, wie es dessen Toten ehrt.
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#16

Re: Externen Programmcode ausführen?

  Alt 13. Feb 2005, 19:33
Eine DLL lädt man entweder statisch:
prcecure Play(); stdcall; external 'WAVPlayer.dll'; Oder dynamisch mit LoadLibrary. Danach muss man allerdings noch die Adresse der Funktion herausfinden mit GetProcAddress.
  Mit Zitat antworten Zitat
Benutzerbild von Master_RC
Master_RC

Registriert seit: 18. Jan 2005
459 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: Externen Programmcode ausführen?

  Alt 16. Feb 2005, 12:44
wie ist das jetzt, wenn ich ne globale variable in der dll benutz?

kann ich die dann auch im hauptprogramm nutzen?
Ein Volk ist nur soviel wert, wie es dessen Toten ehrt.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#18

Re: Externen Programmcode ausführen?

  Alt 16. Feb 2005, 15:06
Zitat von Master_RC:
wie ist das jetzt, wenn ich ne globale variable in der dll benutz?

kann ich die dann auch im hauptprogramm nutzen?
natürlich. du musst nur eine funktion in der dll haben, die als ergebnis den wer der variable liefert. dann rufst du in deinem programm diese funktion auf und hast diese variable in deinem programm und kannst sie einer globalen variable deines programmes zuweisen (also genauergesagt den wert).

  Mit Zitat antworten Zitat
Beckman

Registriert seit: 12. Jul 2004
205 Beiträge
 
#19

Re: Externen Programmcode ausführen?

  Alt 16. Feb 2005, 15:15
da hab ichs damals gelernt, als ich mein erstes plugin support brauchte

lies mal durch, falls du die info von 'Oxmyx' mit loadlibrary() und findprocaddress() nicht sofort umzusetzen weisst.

http://www.dsdt.info/tutorials/dlls/?page=1



lg, beck
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#20

Re: Externen Programmcode ausführen?

  Alt 16. Feb 2005, 15:22
Zitat von Meflin:
natürlich. du musst nur eine funktion in der dll haben, die als ergebnis den wer der variable liefert. dann rufst du in deinem programm diese funktion auf und hast diese variable in deinem programm und kannst sie einer globalen variable deines programmes zuweisen (also genauergesagt den wert).
Delphi bietet auch noch was anderes. Ich habe den Sinn zwar nie kapiert, aber die haben sich dabei bestimmt etwas gedacht.
Delphi-Quellcode:
library MyLib;

var
  ValueA: Integer;

  { ... }

exports
  ValueA;

begin
end.
Und dann im Hauptprogramm:
Delphi-Quellcode:
var
  ValueA: PInteger;
  ValueA := GetProcAddress(ModuleHandle, 'ValueA');   ValueA^ := 10; // einen Wert setzen
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 16:38 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