AGB  ·  Datenschutz  ·  Impressum  







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

include in Schleife benutzen

Offene Frage von "Blumi"
Ein Thema von Blumi · begonnen am 10. Mai 2007 · letzter Beitrag vom 11. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Blumi
Blumi

Registriert seit: 11. Jul 2005
Ort: Basel
96 Beiträge
 
Delphi 2005 Personal
 
#1

include in Schleife benutzen

  Alt 10. Mai 2007, 10:46
Hallo zusammen

Ich frage mich gerade was ich am besten brauchen kann. Ich habe Eingabefelder. Jetzt möchte ich die Werte auf unterschiedliche Art weiterverwenden.

Ich habe mir gedacht dann mache ich einfach eine Schleife und lese dann Ini-Dateien nacheinander aus, wobei jede Ini-Datei für etwas anderes zuständig ist.

Da es aber manchmal noch weitere Variablen benötigt habe ich mir gedacht dann mache ich das wie in PHP und include gleich dort wo der Code benötigt wird PAS-Dateien anstatt das mit den Ini-Dateien.

Ich weiss jetzt aber nicht wie ich das machen soll, da man die include Dateien oben auf der Seite einbindet. Ich wollte sie ja in die Schleife einbinden.

Lg , und danke für Beiträge im voraus


ok EDIT: hab nicht gewusst das man per {$I datei.inc} auch richtig includen kann. Aber leider funktioniert das nur wenn die Datei unter C:\ abgelegt wird, oder der Pfad keine Leerzeichen enthält habe ich gerade bemerkt.

Falls jemand eine bessere Idee hat, soll sich einfach melden , danke trotzdem
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: include in Schleife benutzen

  Alt 10. Mai 2007, 11:05
ein include wie in php gibt es in Delphi schlicht nicht.

Was du aber machen kannst ist eine case..of Fall-Abfrage und dann entsprechende funktionen angeben.
Die können auch in verschiedenen Units liegen, welche in die Uses eingebunden werden müssen. Wenn der Aufbau ständig gleich ist, könntest du pro unit eine Funktion Exec machen, die dann etwas ausführt.

ein entsprechendes case wär etwa so (ich geh von ordinalen Konstanten aus):

Delphi-Quellcode:
case parameter of
  liesxml: liesxml.exec;
  machwas: machwas.exec;
  {...}
end;
Das käme dem angestrebten Ziel wohl am nähesten. Über Sinn und Unsinn kann man aber streiten. Ich würde sowas eher objektorientiert in Klassen packen, die ihre Funktionalität gleich mitbringen. Übrigens ab PHP5 auch da
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: include in Schleife benutzen

  Alt 10. Mai 2007, 11:05
Hallo,

PHP ist eine Interpreter,
Delphi ein Compiler.

Du kannst nicht einfach eine Pas-Datei im "laufenden Betrieb"
je nach irgendeinem gesetzten Schalter in einer Schleife includen.

Was genau willst du denn machen ?

Eine Lösung wäre die Verwendung von Pascal-Interpretern (eine Pascal Script-Komponente),
die führt zur Laufzeit Pascal-Code aus, der natürlich auch aus einer Datei geladen
werden kann.

-> google


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Blumi
Blumi

Registriert seit: 11. Jul 2005
Ort: Basel
96 Beiträge
 
Delphi 2005 Personal
 
#4

Re: include in Schleife benutzen

  Alt 11. Mai 2007, 17:41
mh jetzt habe ich zuviel vorgearbeitet und gar nicht gewusst das es mit dem Include doch nicht geht.

Delphi-Quellcode:
for i := 0 to include_dateien.Count-1 do begin
eine_datei := include_dateien.Items.Strings[i];
  if include_dateien.Selected[i] then
{$I eine_datei}
end;
Ich könnte alle Aktionen schon direkt ins Delphi schreiben es wird aber einfach viel unübersichtlicher und wenn ich eine neue Aktion hinzufügen möchte muss ich wieder im Delphi bearbeiten.

Ich habe mir eben vorgestellt, wenn ich Änderungen am Programm habe kann ich die in einzelne Dateien schreiben. Die Schleife geht durch eine FileListBox, d.h. wenn neue Dateien in einen bestimmten Ordner kommen werden sie gleich bei der Schleife dazu genommen.

Aber jetzt komme ich also nicht weiter. Wäre cool wenn ihr mir helfen könntet. Es gibt bestimmt eine Möglichkeit.

edit: mir ist gerade in den Sinn gekommen. Wenn ein Programm ein Update macht, dann lädt es ja auch nur ein, bis zwei Dateien herunter und nicht nochmal die ganze EXE Datei. Und man muss ja nacher nichts kompilieren.
Von daher kann ich mir vorstellen das es sicher irgendwie geht.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: include in Schleife benutzen

  Alt 11. Mai 2007, 17:48
Du könntest Dlls/Bpls erzeugen, welche du dann dynamisch dazuladen kannst.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Blumi
Blumi

Registriert seit: 11. Jul 2005
Ort: Basel
96 Beiträge
 
Delphi 2005 Personal
 
#6

Re: include in Schleife benutzen

  Alt 11. Mai 2007, 17:50
Zitat von mkinzler:
Du könntest Dlls/Bpls erzeugen, welche du dann dynamisch dazuladen kannst.
ok. Und kann ich in dll-Dateien auch Programmcode von Delphi einfügen oder sieht das dort anderst aus?
Lg
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: include in Schleife benutzen

  Alt 11. Mai 2007, 17:58
Statt ein Programm in eine Exe zu Linken erzeugst du mehrer Dlls (in delphi) und ein Hauptprogramm, welches die Dlls dynamsisch dazulinkt.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Blumi
Blumi

Registriert seit: 11. Jul 2005
Ort: Basel
96 Beiträge
 
Delphi 2005 Personal
 
#8

Re: include in Schleife benutzen

  Alt 11. Mai 2007, 18:43
Zitat von mkinzler:
Statt ein Programm in eine Exe zu Linken erzeugst du mehrer Dlls (in delphi) und ein Hauptprogramm, welches die Dlls dynamsisch dazulinkt.
Hi , danke!

Das habe ich jetzt gemacht. Aber ich wollte einfach mal das Beispiel von http://www.dsdt.info/tutorials/dlls/?page=7 testen.

Jedoch sagt er immer wenn ich die Unit2 kompilieren möchte, "Fehler beim Erzeugen von Formular ...Unit1.dfm kann nicht geöffnet....
Ich habe ja auch nur eine Unit erstellt und kein Formular, aber so ist es beschrieben.

Dann öffnet sich Unit1.pas und es kommen folgende Fehlermeldungen unten:

[Fehler] Unit1.pas(12): E2003 Undefinierter Bezeichner: 'LoadLibrary'
[Fehler] Unit1.pas(14): E2003 Undefinierter Bezeichner: 'GetProcAddress'

Die Unit 'Windows' ist aber bei Unit2 bereits drinnen???

Bitte um Hilfe. Ich wollte einfach mal ein Beispiel testen. Geht bei mir nicht

  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#9

Re: include in Schleife benutzen

  Alt 11. Mai 2007, 18:44
eine DLL ist wie 'ne EXE, nur daß diese nicht eigenständig läuft, sondern von einem Programm (meißt EXE), oder 'ner anderen DLL gelagen wird.

In der DLL sieht es fast genauso wie in der EXE aus.

Schau mal im Delphi-Beispiel-Verzeichnis (da gibt's glaub ich 'ne Demo), der OH, oder hier im Forum (hier gibt's irgendwo ein Tutorial).

[add]
das ist ja nur ein Tut zum dynamischen einbinden einer DLL/Funktion.

Wie sieht denn deine DLL und die EXE aus? (jeweils der Quellcode)


Include gibt es sozusagen auch in Delphi, allerdings nicht so wie in PHP, denn diese Dateien werden nur beim Kompilieren eingebunden.
Du kanns also Dateien einbinden, mußt aber das Programm neu Komilieren und die neue EXE ausliefern.
> [oh]{$I Datei}[/oh], oder [oh]{$Include Datei}[/oh]
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Blumi
Blumi

Registriert seit: 11. Jul 2005
Ort: Basel
96 Beiträge
 
Delphi 2005 Personal
 
#10

Re: include in Schleife benutzen

  Alt 11. Mai 2007, 19:25
Zitat von himitsu:
Include gibt es sozusagen auch in Delphi, allerdings nicht so wie in PHP, denn diese Dateien werden nur beim Kompilieren eingebunden.
Du kanns also Dateien einbinden, mußt aber das Programm neu Komilieren und die neue EXE ausliefern.
> [oh]{$I Datei}[/oh], oder [oh]{$Include Datei}[/oh]
Das möchte ich ja nicht.

Und bei dem:

Zitat:
[add]
das ist ja nur ein Tut zum dynamischen einbinden einer DLL/Funktion.

Wie sieht denn deine DLL und die EXE aus? (jeweils der Quellcode)
Also ich habe noch nichts eigenees gemacht sondern einfach die dll und exe von diesem Tut genommen. Aber das geht bei mir nicht.

Die Dll sieht so aus:

Delphi-Quellcode:
library Project1;
uses
SysUtils,
Classes;
{$R *.RES}
function addiere(zahl1, zahl2: integer): integer; stdcall;
begin
result := zahl1+zahl2;
end;
exports
addiere;
begin
end.
Und die EXE sieht so aus:

Delphi-Quellcode:
unit Unit1;
interface
type
TSummenFunktion = function(zahl1, zahl2: integer): integer;
function addieren(zahl1, zahl2: integer): integer;
implementation
{$R *.DFM}
function addieren(zahl1, zahl2: integer): integer;
var SummenFunktion: TSummenFunktion;
Handle: THandle;
begin
Handle := LoadLibrary(PChar('rechnen.dll'));
if Handle <> 0 then begin
@SummenFunktion := GetProcAddress(Handle, 'addiere');
if @SummenFunktion <> nil then begin
result := addieren(12,3);
end;
FreeLibrary(Handle);
end;
end;
end.
Bei mir funktionierts jedenfalls nicht
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:58 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