Autor Beitrag
meik
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 25.10.07 21:03 
Hallo Leute,

Auf meinem Hauptrechner läuft ein Delphiprogramm und es ist der Apache-Server installiert.

Ich möchte jetzt eine html-Seite erstellen, auf der es 2 Buttons gibt. In meinem Delphiprogramm gibt es ebenfalls 2 Buttons.
Die html-seite wird über das Netzwerk aufgerufen.
Jetzt soll beim Klick auf Button1, auf der html-seite, die Procedure im Delphiprogramm ausgeführt werden, die für das OnClick-Ereigniss im von Button1(im Delphiprogramm) definiert ist.
Wie stell ich das am geschicktesten und einfachsten an!?
es geht lediglich darum, wie ich das anstelle, dass beim klick des buttons auf der html-seite eine "nachricht" an das delphiprogramm geschickt wird, "Button wurde gedrückt..."
wozu ich das brauche?

eine anlage wird über ein webio(webinterface) von einem delphiprogramm gesteuert, das auf einem hauptrechner läuft.
es gibt zwei auswahlmöglichkeiten, was die anlage machen soll, welche über die buttons ausgewählt werden.

nun soll aber zusätzlich ein beliebiger andere pc an dieses netzwerk angeschlossen werden und eben falls die anlage bedienen können. auf dem 2. rechner soll aber keine software oder ähnliches installiert werden.
deswegen dachte ich es wäre das günstigste sowas über den explorer des 2. rechners zu "steuern".
wozu man das braucht? das ganze soll zu demonstrationszwecken dienen.
ich wäre euch sehr dankbar, wenn ich einige vorschläge von euch bekommen würde.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Do 25.10.07 21:09 

_________________
Markus Kinzler.
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Do 25.10.07 22:00 
Ich würd mal sagen du speicherst einfach per PHP einen Wert in eine Datei (glaube fopen, fputs, fgets, freads heißen die funktionen). Im Delphi-Proggi wird diese Datei dann immer wieder per Timer ausgelesen, und sobald sich was tut die Aktion ausgeführt (und die Datei zurückgesetzt)

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Agawain
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 460

win xp
D5, MySQL, devxpress
BeitragVerfasst: Do 25.10.07 22:13 
hi

warum mußt Du den Apache verwenden?

Korrekt ohne Umwege, wäre es wenn es eine Server-Anwendung in Delphi ist.
Wenn aus irgendwelchen Gründen Apache beteiligt sein muß, da fällt mir leider nur ein, eine servlet-engine zu installieren, einen Listener in Java zu schreiben, die Anfrage dort zu empfangen und dann an Delphi-Server-weiterzuleiten.

Apache ansich kann sowas doch nicht leisten, zumindest IMHO nicht.
Widerspräche auch irgendwie dem Client-Server-Prinzip.

Gruß

Aga

_________________
Gruß Aga
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Do 25.10.07 22:28 
Also bei mir funzt es, Delhpi-Programm und Script im selben Verzeichnis, Timer hab ich auf 300 gestellt:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Shape1: TShape;
    Timer1: TTimer;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  pfad: string;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  shape1.brush.Color := clRed;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  shape1.brush.Color := clGreen;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  p: Integer;
begin
  p := 0;
  try
    memo1.Lines.LoadFromFile('datei.txt');
    p := StrToInt(memo1.Lines[0]);
    deletefile('datei.txt');
  except
  end;
  case p of
    1: button1click(self);
    2: button2click(self);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  pfad := extractFilePath(paramstr(0));
end;

end.


ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
<form action="">
<input type="submit" value="Knopf 1" name="knopf">
<input type="submit" value="Knopf 2" name="knopf">
</form>

<?
  if (isset($knopf))
     {
       $f = fopen("datei.txt","w");
       switch ($knopf)
       {
         case "Knopf 1": fputs($f,"1"); echo "K1 gesetzt"; break;
         case "Knopf 2": fputs($f,"2"); echo "K2 gesetzt"; break;
       }
     }
?>
Einloggen, um Attachments anzusehen!
_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 26.10.07 00:35 
Warum nicht einfach 'n Server in der Anwendung machen, und wenn 1 oder 2 über das PHP-Skript geschrieben wird, wird die entsprechende OnClick-Routine ausgeführt ...

Wenn Du schon auf Änderungen prüfst, arbeitet wenigstens mit FileChange-Notifications von Windows; das spart Dir einiges an Resourcen ...

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
meik Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 26.10.07 11:23 
user profile iconTilman hat folgendes geschrieben:
Also bei mir funzt es, Delhpi-Programm und Script im selben Verzeichnis, Timer hab ich auf 300 gestellt:

ich hätte bitte eine Frage, sollte das Delphi und PHP im gleichen Pfad sein oder nicht unbedingt????

Moderiert von user profile iconNarses: Code aus dem Komplett-Zitat gekürzt.
DarkHunter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 477

Win XP
D3 Prof, D2005 PE
BeitragVerfasst: Fr 26.10.07 12:02 
Es gibt doch in PHP mehrere Funktionen um externe Programme auszuführen:
de.php.net/manual/de/function.system.php
de.php.net/manual/de/function.exec.php
de.php.net/manual/de...ction.shell-exec.php
de.php.net/manual/de/function.passthru.php

was spricht gegen diese Funktionen?

_________________
I believe that every human has a finite number of heart-beats. I don't intend to waste any of mine running around doing exercises.
- Neil Armstrong
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 26.10.07 12:03 
Dagegen spricht, dass du mit diesen 4 Funktionen keine laufenden Programme direkt steuern kannst.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
DarkHunter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 477

Win XP
D3 Prof, D2005 PE
BeitragVerfasst: Fr 26.10.07 12:10 
Stimmt, das habe ich eben nicht bedacht.

Aber diese Kommunikation über eine Datei ist meiner Meinung nach nicht das gelbe vom Ei.

Da ebenfalls ein Rechner im Netzwerk angesprochen werden soll, könnte man nicht die Sockets vom PHP nutzen?

In das Delphi-Programm kommt dann zusätzlich ein TServerSocket um die Daten zu empfangen.
Dann wird das Programm nur aktiv wenn es wirklich sein muss, sollte ein paar Ressourcen sparen.

_________________
I believe that every human has a finite number of heart-beats. I don't intend to waste any of mine running around doing exercises.
- Neil Armstrong
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 26.10.07 14:47 
user profile iconmeik hat folgendes geschrieben:
ich hätte bitte eine Frage, sollte das Delphi und PHP im gleichen Pfad sein oder nicht unbedingt????


Die müssen nicht im selben Verzeichnis liegen. Aber dann musst du in deinem Delphi-Programm halt den kompletten Pfad zur Datei angeben.

Moderiert von user profile iconNarses: Zitat gekürzt.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
meik Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 30.10.07 10:40 
user profile iconTilman hat folgendes geschrieben:
Also bei mir funzt es, Delhpi-Programm und Script im selben Verzeichnis, Timer hab ich auf 300 gestellt:


Das Delphiprogramm zeigt einen Fehler an. könnte jemand erklären wo der fehler liegen könnte??obwohl es bei Tilman das Programm funktioniert. im Anhang kann man den fehler sehen als Bild.Zur info benutze ich Delphi5.

Moderiert von user profile iconNarses: Quote gekürzt.
Einloggen, um Attachments anzusehen!
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 30.10.07 18:51 
Sitzt vor dem Rechner ...

Laut der Meldung: Die Datei existiert nicht ... Steht doch alles da!!! :nixweiss:

Bitte Fullquote zu gunsten eines Back-Links rausnehmen (oder auf gezielte Sachen mit Split-Quote eingehen ...

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
meik Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 30.10.07 21:43 
ok, ich werde das machen. danke schön

Moderiert von user profile iconNarses: Quote entfernt... :roll: