Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   FRITZ!Box Komponente v0.17 (https://www.delphipraxis.net/179127-fritz-box-komponente-v0-17-a.html)

Garfield 16. Feb 2014 11:48


FRITZ!Box Komponente v0.17
 
Liste der Anhänge anzeigen (Anzahl: 5)
Dies ist eine Komponente mit welcher auf die FRITZ!Box zugegriffen werden kann.

Merkmale:
  1. Lesen Boxinfo (Name, HW, Version, Revision, Serial, ...).
  2. Lesen verschiedener Geräteinformationen (Name, Provider, Beschreibung, UDN, ...).
  3. Lesen Internet Protokoll Adressen (extern, intern).
  4. Lesen Status (Verbindung, letzter Fehler, Uptime).
  5. Lesen DSL-Eigenschaften (Link Type, Link Status, Modulation, ATM Enc).
  6. Neuverbindung zum Erhalt einer neuen externen Internet Protokoll Adresse.
  7. Anrufmonitor. Nach Anmeldung und Lesen des Telefonbuches auch mit Namen.
  8. Anmeldung mit SessionID und Benutzernamen.
  9. Abruf des Telefonbuches als XML-Datei.
  10. Abruf der Anrufliste als CSV-Datei.
  11. WLAN: Ein- und Ausschalten, Namen ändern, Verschlüsselung und Schlüssel anzeigen, Name verstecken ändern.
  12. Gast-WLAN: Ein- und Ausschalten, Namen, Verschlüsselung und Schlüssel ändern.
  13. Lesen und Setzen der Nachschaltung/Klingelsperre.

Geplante Merkmale
  1. Hinzufügen, Ändern und Löschen von Telefonbucheinträgen.
  2. Hinzufügen, Ändern und Löschen von Sperren.
  3. Wählhilfe benutzen.
  4. Weitere welche noch nicht spruchreif sind.

Anmerkungen:
  1. Die aktuellen Demos wurden mit Turbodelphi und Lazarus 1.0 unter Windows XP sowie Delphi XE5 unter Windows 8.1 erstellt und mit den FRITZ!Boxen 7320 und 7362 SL getestet.
  2. Zum Projekt gehört auch ein Spider, welcher sich die XML-Dateien einer FRITZ!Box hangelt, Anfragen erstellt und ausführt. Siehe unten in #3.
  3. Ich arbeite in einer Einsatzwechseltätigkeit und habe deshalb nicht ständig Zugriff auf eine FRITZ!Box mit Internetverbindung, da mein WLAN-Router (Huawei E5319) keine Reichweitenverlängerung unterstützt und manche Funktionen wohl nur gehen, wenn die FRITZ!Box ihre Systemzeit aus dem Internet aktualisieren kann. Somit können sich Updates etwas hinziehen.
  4. Die Anhänge sind die aktuelle Komponente mit den Demos (nur Quelltexte), die auf Windows XP compilierte Lazarus 1.0 Demo, die auf Windows XP compilierte Turbodelphi Demo und die auf Windows 8.1 compilierte Delphi XE5 Demo. die letzte Demo läuft nicht auf Windows XP und 7.
Hinweise, Anregungen, Kritiken usw. sind willkommen.

Änderungen

[v0.17] 27.03.2014
[v0.17] Überarbeitung der Komponente.
[v0.17] Neue Demos.
[v0.17] Anmeldung mit SessionID für Firmware ab xx.04.74 und vor xx.05.50 entfernt.
[v0.17] Lesen des Online-Telefonbuches entfernt.
[v0.17] Abruf der Anrufliste als XML-Datei entfernt.
[v0.17] Anrufmonitor integriert. Nach Anmeldung und Lesen des Telefonbuches Anrufsignalisierung auch mit Namen möglich.
[v0.17] WLAN: Ein- und Ausschalten, Namen ändern, Verschlüsselung und Schlüssel anzeigen, Name verstecken ändern.
[v0.17] Gast-WLAN: Ein- und Ausschalten, Namen, Verschlüsselung und Schlüssel ändern.
[v0.17] Die Demos sind alle unter Win8.1 compiliert.

[v0.16] Anrufmonitor hinzugefügt.

[v0.15] Bei größeren 'Chunked' übertragenen Dateien konnte das Ende abgeschnitten werden.
[v0.15] Nachtschaltung.

Garfield 1. Mär 2014 18:27

AW: FRITZ!Box Komponente
 
Liste der Anhänge anzeigen (Anzahl: 5)
[v0.15] Bei blockweise übertragenen Dateien konnte bei größeren Dateien das Ende abgeschnitten werden. Die Nachtschaltung funktioniert nun auch bei der neueren Firmwareversion.

Hier ein Bilder von der Demo.

Hm. Auf Bild4 sieht man, dass die XP-Demo noch nicht richtig angepasst wurde. Bei XE5-Demo stimmt es.

Garfield 1. Mär 2014 19:35

AW: FRITZ!Box Komponente
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hier der Spider. Mit XE5 auf Win8.1 compiliert. Funktioniert vermutlich nur auf Windows 8. :cry:

Benutzung:

Mit einem Klick auf den Button Scannen werden ausgehend von den Beschreibungsdateien tr64desc.xml und igddesc.xml weitere Beschreibungsdateien geladen und die Services und Actions in der linken Box (2) gelistet. Nach Auswahl einer Action wird darunter (3) das zu sendende Script bzw. daneben (4) die zugehörigen Argumente eingetragen. Bei Auswahl eines Argumentes (4) werden rechts daneben dessen Eigenschaften angezeigt (5). Mit einem Klick auf Senden (6) wird das Script gesendet und die Antwort darunter angezeigt (7).

Erhält man den Fehler 401 Unauthorized bringt ein Anmelden nicht wirklich etwas. Dann erhält man den Fehler 500 Internal Server Error mit den UPnPError 401. Das liegt wohl daran, dass man HTTPS verwenden soll bzw. muss. :?

Nachtrag: Noch schnell mit TD unter XP compiliert.

greenmile 2. Mär 2014 20:06

AW: FRITZ!Box Komponente
 
Einfach geil! Ich habe schon lange keinen so interessanten Sourcecode bzw. so ein Projekt mehr gelesen. Vielen Dank!

sh17 2. Mär 2014 20:52

AW: FRITZ!Box Komponente
 
Einfach Top, Danke ebenfalls. Alles auf GitHub oder so wäre noch toll, einfacher zu handhaben

Garfield 2. Mär 2014 22:14

AW: FRITZ!Box Komponente
 
Vielen Dank für Eure Antworten. An Github oder ähnliches habe ich noch nicht gedacht. Hatte das bisher nur auf meiner Homepage veröffentlicht und der Quelltext hat nach meiner Ansicht noch Optimierungspotential.

sh17 2. Mär 2014 23:02

AW: FRITZ!Box Komponente
 
Zitat:

Zitat von Garfield (Beitrag 1250340)
und der Quelltext hat nach meiner Ansicht noch Optimierungspotential.

Welcher Entwickler sagt, das sein code optimal ist ;-)

Garfield 3. Mär 2014 05:38

AW: FRITZ!Box Komponente
 
Vermutlich kaum einer. Schließlich entwickelt sich jeder ständig weiter.

Die Komponente verwendet Telnet, SOAP, UPnp und LUA-Scripte mit Parsen der HTML-Antwort. Das meiste was man im Internet findet verwendet die letzte Möglichkeit. Scheint auch das einfachste zu sein, da sich nur manchmal die Adressen ändern. Sieht man am Onlinetelefonbuch was nun nicht mehr funktioniert.

Garfield 4. Mär 2014 16:56

[v0.16] FRITZ!Box Komponente
 
Liste der Anhänge anzeigen (Anzahl: 1)
Habe den Anrufmonitor als extra Klasse hinzugefügt. Getestet unter WinXP mit Turbodelphi und Lazarus 1.0 und unter Win8.1 mit XE5 und Lazarus 1.1. Der Anrufmonitor benutzt den Port 1012. Dieser Port wird über ein angeschlossenes Telefon (FON) oder die Wählhilfe mit dem Code #96*5* geöffnet und mit #96*4* geschlossen.

Garfield 5. Mär 2014 23:48

FRITZ!Box Query
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hier ein kleines "Spielzeug". Damit lassen sich Queries abfragen. Diese stehen im Quelltext der HTML-Seiten der Fritzbox. Ein Querystring ergibt sich aus dem String zwischen den eckigen Klammern ohne Hochkommata welchem ein Variablenname sowie ein = vorangestellt wird. In der Ini sind einige Beispiele enthalten.

Garfield 19. Mär 2014 21:37

AW: FRITZ!Box Komponente
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe die Komponente komplett überarbeitet. Wegen der jüngsten Probleme bei der Sicherheit gehe ich davon aus, dass aktuelle Firmwareversionen eingesetzt werden. Deshalb wurde das, was nicht mehr ging, entfernt. Ein paar Funktionen sind dazugekommen, wobei das Ein- und Ausschalten des WLAN noch nicht implementiert ist, da ich im Moment über WLAN mit der Fritzbox verbunden bin. Damit verbunden gibt es eine neue Demo. Die von Delphi XE5 ist fertig und diesem Beitrag angehängt. Dazu ein Bild vom Anrufmonitor.

Garfield 21. Mär 2014 08:03

AW: FRITZ!Box Komponente
 
Kleine Fehlerkorrektur und wenn das Telefonbuch geladen ist, wird der Name in der Anrufbox angezeigt. WLAN schalten geht weiterhin nicht, das will ich heute nachmittag noch erledigen, wenn ich die TurboDelphi-Demo am anderen Rechner fertigmache.

Die Komponente wertet nur das erste Telefonbuch und daraus nur einen Teil der Einträge aus. Es fehlen zum Beispiel die Anganben zu Buchstabenwahl (Vanity **8), zur Kurzwahl (Quickdial **7) und die Angabe der letzten Änderung. Sollte dies auch ausgewertet werden?

Garfield 23. Mär 2014 06:58

AW: FRITZ!Box Komponente
 
Das Schalten des WLAN scheint doch nicht so einfach zu sein. Es funktioniert das Holen der Informationen, das Ausschalten des WLAN, das Schalten und Ändern des GästeWLAN.

Garfield 24. Mär 2014 20:15

AW: FRITZ!Box Komponente
 
Das Einschalten und Ändern des WLAN funktioniert. Zumindest wenn man nicht über WLAN mit der Box verbunden ist.

Garfield 27. Mär 2014 17:43

AW: FRITZ!Box Komponente
 
Neue Version 0.17.

Ich habe die Komponente überarbeitet und die Merkmale welche nicht mehr funktionierten entfernt sowie den Anrufmonitor integriert. Wenn man angemeldet ist/war und das Telefonbuch geladen ist, werden wenn möglich bei der Anrufsignalisierung die Namen mitangezeigt. Hinzu gekommen ist ein wenig WLAN.

Perlsau 9. Mär 2015 14:41

AW: FRITZ!Box Komponente v0.17
 
Hallo Garfield,

ich teste gerade deine Komponente mit XE7 und muß feststellen, daß dabei ein paar Löcher im Speicher zurückbleiben:

An unexpected memory leak has occurred. The unexpected small block leaks are:
85 - 92 bytes: TStringList x 8

Meine Recherche ergab, daß fReceived daran schuld ist: Diese Stringliste wird in Zeile 2406 erzeugt, aber nicht wieder freigegeben:
Delphi-Quellcode:
constructor THTTPRequest.create;
{*******************************************************************************
*  -1- Klasse erstellen.
}
begin
  inherited;
  fContent := '';
  fReceived := TStringList.Create;
  fPort    := 80;
  fHTTPSend.Method         := 'GET';
  fHTTPSend.FileURL        := '';
  fHTTPSend.Hostname       := '';
  fHTTPSend.Accept         := '*/*';
  fHTTPSend.ContentType    := 'text/html, text/xml';
  fHTTPSend.ContentLength  := 0;
  fHTTPSend.Soap.Namespace := '';
  fHTTPSend.Soap.Request   := '';
  FillChar(fHTTPRcvd, SizeOf(fHTTPRcvd), 0);
end;

Durch Einfügen einer Zeile in die Destroy-Methode der Klasse THTTPRequest konnte der Fehler behoben werden:
Delphi-Quellcode:
{$IfDef DELPHI}
destructor THTTPRequest.destroy;
{*******************************************************************************
*  -1- Klasse freigeben.
}
begin
  if Assigned(fReceived) Then fReceived.Free; // meine Ergänzung
  inherited;
end;
{$EndIf}

DeddyH 9. Mär 2015 14:45

AW: FRITZ!Box Komponente v0.17
 
Ganz nebenbei:
Zitat:

Delphi-Quellcode:
if Assigned(fReceived) Then fReceived.Free;

ist faktisch dasselbe wie
Delphi-Quellcode:
fReceived.Free;
Man soll ja eben deshalb Free statt Destroy verwenden, weil Free intern die eigene Referenz prüft, da muss man das ja nicht außerhalb noch einmal machen.

Perlsau 9. Mär 2015 14:57

AW: FRITZ!Box Komponente v0.17
 
Okay, danke, wo du recht hast :thumb:

DeddyH 9. Mär 2015 15:01

AW: FRITZ!Box Komponente v0.17
 
Ich seh das öfter, es ist ja auch nicht falsch, aber eben unnötig ;)

Perlsau 9. Mär 2015 15:48

AW: FRITZ!Box Komponente v0.17
 
@Garfield:

Noch ein Fehler: Nach dem Start des Anrufmonitors – und selbstverständlich vorausgegangener Anmeldung – hängt deine Testanwendung und läßt sich nur noch via Taskmanager beenden. Das kann ich jetzt erstmal nicht beheben, dazu kenne ich mich mit der Materie zu wenig aus :cry:

noisy_master 12. Mär 2015 20:35

AW: FRITZ!Box Komponente v0.17
 
Ich habe die Komponente auch gerade in der Mache.
Bei mir funktioniert der Anrufmonitor wunderbar!
(allerdings unter XE5)

Garfield 14. Mär 2015 07:05

AW: FRITZ!Box Komponente v0.17
 
@Perlsau
Vielen Dank für Deinen Bericht. Den Fehler hatte ich leider nicht gefunden. Warum sich der Anrufmonitor weghängt, weiß ich nicht. Der stellt eigentlich nur eine Verbindung zur Fritzbox her und wartet auf Ereignisse. siehe hier

@noisy_master
Dein Thema zum AB habe ich gesehen. :thumb:

Perlsau 14. Mär 2015 11:52

AW: FRITZ!Box Komponente v0.17
 
Zitat:

Zitat von Garfield (Beitrag 1293431)
@Perlsau
Vielen Dank für Deinen Bericht. Den Fehler hatte ich leider nicht gefunden. Warum sich der Anrufmonitor weghängt, weiß ich nicht. Der stellt eigentlich nur eine Verbindung zur Fritzbox her und wartet auf Ereignisse. siehe hier

Ich bin auch verwundert, da ich ja wie beschrieben auch deine kompilierte Testanwendung gestartet habe und diese abstürzt, nachdem ich im Reiter Anfrufmonitor auf Start geklickt habe. Damit kann es ja kaum an irgend einem fehlerhaften Compilat liegen, wenn bei dir und bei anderen der Anrufmonitor funktioniert.

Könnte es sein, daß dieses Verhalten mit meiner Kabel-FritzBox 6340 zusammenhängt oder mit irgendwelchen Einstellungen, die ich zuvor in der FritzBox ändern müßte?

Garfield 24. Mär 2015 06:52

AW: FRITZ!Box Komponente v0.17
 
Entschuldigung, mein Laptop ist defekt, deshalb war die späte Antwort.

Das einzige was man machen muss, ist das Öffnen des Ports 1012.
Zitat:

Hinweis: Der Port wird an der Fritzbox über ein angeschlossenes Telefon mit dem Code #96*5* geöffnet und mit #96*4* wieder geschlossen.
Ich habe allerdings nie probiert, was passiert, wenn der Port geschlossen ist.

Garfield 26. Mär 2015 18:19

AW: FRITZ!Box Komponente v0.17
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, noch einmal ich. Links hat die Demo verschiedene Button. Alles oberhalb dem Anmeldedialog funktioniert ohne Anmeldung, alles darunter nur mit Anmeldung. Wenn der Port für den Anrufmonitor geschlossen ist, sollte die Meldung im Anhang kommen.

Funktioniert der Callmonitor auch nicht?

Perlsau 26. Mär 2015 20:27

AW: FRITZ!Box Komponente v0.17
 
Sorry, Garfield, bin gerade mit einem anderen Projekt beschäftigt und melde mich wieder, wenn ich damit fertig bin :wink:

Garfield 26. Mär 2015 23:31

AW: FRITZ!Box Komponente v0.17
 
:thumb:

Garfield 14. Jul 2015 16:32

AW: FRITZ!Box Komponente v0.17
 
Liste der Anhänge anzeigen (Anzahl: 2)
In den letzten Tagen bin ich zufällig auf die Seite http://www.paehl.de/news/fritzbox-anrufmonitor/ gestoßen (Bild 1). Sieht den Callmonitor auf Bild 2 - der gehört zu diesem Projekt - sehr ähnlich.

borstenei 30. Jul 2015 21:58

AW: FRITZ!Box Komponente v0.17
 
Hallo Garfield,
ich teste gerade Deine Komponente.
Etwas kann ich nicht nachvollziehen und zwar wenn ich mir die Anrufsliste anzeigen lasse, listet mir Dein Demoprojekt als Beispiel in meinem Fall 146 Einträge auf. Speichere ich das als Datei werden 401 Einträge aufgelistet.
Ich habe das ganze mal selber nach gebaut und zum auslesen auch Deine Procedure verwendet und auch hier das selbe Ergebnis 146 werden angezeigt tatsächlich 401 vorhanden. Ab einem bestimmten Datum werden alle Einträge ignoriert.
Was mache ich hier falsch bzw. was übersehe ich?
Delphi-Quellcode:
fFonCalls.Count
hat immer den in meinen Fall korrekten Wert von 401.
Gruß Borstenei

greenmile 21. Jun 2016 08:02

AW: FRITZ!Box Komponente v0.17
 
Hallo,

der Thread ist zwar schon etwas älter, wollte aber trotzdem mal fragen: Gibt es bei dem Projekt Neuigkeiten? Mich würde die Steuerung von Netzwerken interessieren, also LAN, WLAN. Wer ist gerade verbunden, was macht er usw. Ist das möglich?

Garfield 7. Nov 2016 18:17

AW: FRITZ!Box Komponente v0.17
 
@Borstenei - Das dürfte an der Software der Fritzbox liegen. Ich habe hier jetzt keine Fritzbox um das noch einmal zu Überprüfen, aber ich denke in der Fritzbox werden auch nicht alle 400 Einträge angezeigt.

@greenmile - In der v0.17 ist schon etwas WLAN drin. Die v0.18 ist/war schon einige Zeit in Arbeit (Sollte bereits letztes Jahr hier veröffentlich werden). Die Verwendung mehrerer Compiler ist jedoch nicht so einfach. Von Februar bis Juli war mein Laptop defekt. Entweder ist er immernoch defekt oder Windows 10 läuft darauf nicht stabil. Die ein, zwei Bluescreen mit Neustart am Abend sind nicht gerade förderlich. Im Moment beschäftige ich mehr mit Lazarus im allgemeinen und dem IP Scan im besonderen.

Rene K. 11. Nov 2016 19:35

AW: FRITZ!Box Komponente v0.17
 
Scheinbar geht es hier nicht weiter, aber ich frage dennoch.

Ich habe mir die aktuelle Version herunter geladen. Die Lazarus-Variante funktioniert nicht unter MAC OS. Statt WinSock muss da Synapse mit SynSock her. Leider sind die IPv4 Aufrufe aber nicht mehr enthalten. Jedenfalls konnte ich den Code nicht komplett migrieren. Besser sah es mit der XE5 Version unter Berlin 10.1 aus. Klappte auf Anhieb.

Nun zur eigentlichen Frage: Wie kann ich die Steckdosen abfragen (via getswitchstate)?
Das Studium diverser PHP Scripte hat mich leider nicht weiter gebracht.

Garfield 12. Nov 2016 13:26

AW: FRITZ!Box Komponente v0.17
 
Zitat:

Zitat von Rene K. (Beitrag 1353407)
Scheinbar geht es hier nicht weiter, aber ich frage dennoch.

-31-

Zitat:

Zitat von Rene K. (Beitrag 1353407)
... Die Lazarus-Variante funktioniert nicht unter MAC OS. ...

Da Windows-Funktionen verwendet werden ist das logisch. Ohne MAC OS kann ich es eh nicht testen. Ubuntu ist für mich eher interessant. Ob das dann alles kompatibel sein wird, weiß ich nicht. Den Callmonitor hatte ich erfolgreich mit Wine getestet.

Zitat:

Zitat von Rene K. (Beitrag 1353407)
Nun zur eigentlichen Frage: Wie kann ich die Steckdosen abfragen (via getswitchstate)?
Das Studium diverser PHP Scripte hat mich leider nicht weiter gebracht.

Wozu PHP-Scripte auswerten? Firefox mit Live HTTP Headers starten, die gewünschten Informationen im Fritzbox-Menue abrufen und den Mitschnitt von Live HTTP Headers auswerten.

Garfield 12. Nov 2016 13:34

AW: FRITZ!Box Komponente v0.17
 
Liste der Anhänge anzeigen (Anzahl: 1)
Vielleicht das mal ansehen.

Garfield 19. Nov 2016 08:45

AW: FRITZ!Box Komponente v0.17
 
Liste der Anhänge anzeigen (Anzahl: 1)
Erläuterung:

Der Spider verwendet upnp. Auf der Fritzbox sind verschiedene Beschreibungsdateien enthalten, diese enthalten Links auf weitere Beschreibungsdateien oder die Beschreibung von Funktionen usw. Das bedeutet die Namen der Funktionen, ihre Variablen, die Typen der Variablen und die möglichen Werte.

Mit einem Klick auf den Button "Scannen" wird nach den Dateien 'tr64desc.xml', 'igddesc.xml', 'phonebook.xml' und 'crossdomain.xml' geguckt. Sind sie vorhanden werden sie durchgesehehen.

Unter "Services, Actions, Argumente und Eigenschaften" ist links ein TreeView mit den gefundenenen Dateien und Funktionen usw. Wird eine Funktion ausgewählt werden in dem Memo in der Mitte die Variablen angezeigt. Wählt man eine Variable aus, werden im Memo rechts der Typ und die Werte angezeigt.

Ist eine Funktionn ausgewählt, wird unter "TCP Send Script" das Script zur Abfrage angezeigt. Ein Klick auf den Button "Senden" verschickt das Script und unter "TCP Receive Script" sieht man die Antwort. Ist der Balken darüber grün ist alles in Ordnung. Ist er rot, liegt es in der Regel daran, dass eine HTPPS-Verbindung notwendig ist, welche nicht im Spider implementiert ist.

Der Spider ist mit TurboDelphi geschrieben und kompiliert.

Garfield 1. Dez 2016 22:27

AW: FRITZ!Box Komponente v0.17
 
Dokumente dazu: https://avm.de/service/schnittstellen/

Vienesko 21. Mai 2017 22:14

AW: FRITZ!Box Komponente v0.17
 
Moin Moin,

ich bin neu hier im Forum (bisher nur stiller Mitleser) und beschäftige mich noch nicht so lange mit der Programmierung in Delphi.
Ich möchte mir das Programmieren mit einer eigenen Software beibringen - also leraning by doing sozusagen.

In diese Software (eine eigene Haussteuerung) möchte ich auch die Abfrage meiner FritzBox implementieren.
Ich habe die Komponente heruntergeladen (herzlichen Dank an Garfield fürs Bereitstellen) und wollte diese installieren. Ich bekomme allerdings Fehler angezeigt.
Er findet unter "uses" leider "Dom" und "XMLRead" nicht.

Wo liegt das Problem? Auch bei der Beispielanwendung gibt es Probleme.
Ich nutze XE7.

Ich würde mich freuen, wenn ihr mir helfen könntet. Vielen Dank

himitsu 21. Mai 2017 22:32

AW: FRITZ!Box Komponente v0.17
 
Alle fast alle Delphi-Units heißen inzwischen anders, aber standardmäíg hat man in neuen Projekten den fehlenden Namespace definiert (vorallem
Delphi-Quellcode:
System. Vcl. und WinApi.
).
Forms = Vcl.Forms
SysUtils = System.SysUtils
usw.

Als Erstes solltes du lernen, was Compiler-Direktiven sind.
Dieser Code wurde für Delphi und Lazarus geschrieben und je nach Compiler und CompilerVersion wird unterschiedlicher Code verwendet.

Delphi-Quellcode:
{$IfDef VER260}{$Define DELPHI}{$Define DELPHI_XE2_UP}{$EndIf}   {Delphi XE5}
{$IfDef VER250}{$Define DELPHI}{$Define DELPHI_XE2_UP}{$EndIf}   {Delphi XE4}
{$IfDef VER240}{$Define DELPHI}{$Define DELPHI_XE2_UP}{$EndIf}   {Delphi XE3}
...
{$IfDef VER80}{$Define DELPHI} {$EndIf}                          {Delphi 1}

interface

uses
  Classes, SysUtils, Windows, WinSock, Dialogs, ExtCtrls, Forms, StdCtrls, Graphics,
  {$IfDef DELPHI}Jpeg, Messages, XMLIntf, XMLDoc{$Else}Controls, Dom, XMLRead{$EndIf};
Und schon würde bestimmt schnell auffallen, dass dein Problem im Bereich "Prüfung auf Delphiversionen" liegt.

Der fehlende Teil:
Delphi-Quellcode:
{$IfDef VER320}{$Define DELPHI}{$Define DELPHI_XE2_UP}{$EndIf}   {Delphi XE10.2}
{$IfDef VER310}{$Define DELPHI}{$Define DELPHI_XE2_UP}{$EndIf}   {Delphi XE10.1}
{$IfDef VER300}{$Define DELPHI}{$Define DELPHI_XE2_UP}{$EndIf}   {Delphi XE10}
{$IfDef VER290}{$Define DELPHI}{$Define DELPHI_XE2_UP}{$EndIf}   {Delphi XE8}
{$IfDef VER280}{$Define DELPHI}{$Define DELPHI_XE2_UP}{$EndIf}   {Delphi XE7}
{$IfDef VER270}{$Define DELPHI}{$Define DELPHI_XE2_UP}{$EndIf}   {Delphi XE6}
Nja, aus solchen Grüden nutze ich in meinen Codes eine die entsprechenden Conditional-Expressions ala
Delphi-Quellcode:
{$IF CompilerVersion >= 23.0}

für
Delphi-Quellcode:
{$DEFINE DELPHI_XE2_UP}
, was auch in zukünftigen Delphis passen wird, im Gegensatz zu den
Delphi-Quellcode:
{$IFDEF VER230}
-Orgien.

Aber am Liebsten prüfe ich möglichst auf benötigte Compiler-Features und Deklarationen, anstatt auf irgendwelche Compiler-Versionen, da es "eindeutiger", verständlicher und vorallem versionsunabhängig ist.
Delphi-Quellcode:
uses {$IFDEF FPC}Controls, Dom, XMLRead{$ELSE}Jpeg, Messages, XMLIntf, XMLDoc{$ENDIF}  // FreePacal und seit XE gibt es im Delphi auch "DCC"

{$IF Declared(RawByteString)}RawByteString{$ELSE}AnsiString{$IFEND}

Garfield 28. Mai 2017 22:30

AW: FRITZ!Box Komponente v0.17
 
@Vienesko: Hier muss man nichts installieren, weshalb es wohl eigentlich keine Komponente ist. Die Demos habe ich mit den angegebenen Compilern getestet und Änderungen nur soweit vorgenommen wie es notwendig war. Delphi XE5 war dabei der neueste. Neuer wird er wahrscheinlich nicht mehr werden.

@himitsu: Dein Hinweis auf das Prüfen auf Feature und Deklarationen finde ich gut. Ein Update ist schon lange fällig.

Andy090778 31. Mai 2017 21:58

AW: FRITZ!Box Komponente v0.17
 
Hallo Garfield,

konnte aus Deiner Komponente viel Erfahrung sammeln wie man die Fritz.box denn nun überhaupt mal anspricht.
Ich überlege grade ob ich eine Delphi GUi samt Server bastle für den geplanten Touchscreen in der Küche, der als Hauptaufgabe natürlich per KNX das Haus steuern kann.

Bist Du schon weitergekommen beim Feature "Wählhilfe"?

Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:42 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