![]() |
Auslesen einer csv.html
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo und ein gesundes neues Jahr!
Ich habe folgendes Problem. Ein IPswitch sendet ein paar Messdaten an die eigene Seite csv.html welche ohne Login ausgelesen werden kann. Die Daten werden im Bereich von wenigen Millisekunden aktualisiert. Nun möchte ich in zyklischen Abständen die Daten lesen und als String in eine eigene csv-Datei speichern. Brauchen tue ich eigentlich nur die Werte 16 und 19, aber das ist ja erst mal Nebensache. Der Hersteller stellt auch ein einfaches PHP Script mit Erläuterung zur Verfügung, leider habe ich keinen Plan dies in Delphi umzusetzen. Vielen Dank schon mal für eure Hilfe.
Delphi-Quellcode:
<?php
$st= file_get_contents( "http://192.168.2.10/csv.html" ); // web-Seite einlesen echo "<br>".$st."<br>"; // Inhalt als String ausgeben $sta= explode( ",", $st, 100 ); // String in Array wandeln mit Trennzeichen Komma, bis zu 100 Elemente print_r ($sta); // komplettes Array ausgeben echo "<br>Abstand gefiltert= ".$sta[26]."cm<br>"; // 26.Element ist hier bei einem IPswitch-SG.1 der Abstand eines SB.cm-Moduls ?> |
AW: Auslesen einer csv.html
Einfach mit verwendeter Netzwerkbibliothek Laden:
z.B. Indy
Delphi-Quellcode:
csv := idHTTP1.Get( 'http://192.168.2.10/csv.html');
|
AW: Auslesen einer csv.html
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Markus,
vielen Dank für den Tipp, hat schon mal prima funktioniert. Das Ergebnis ist allerdings, dass der komplette Inhalt als String geladen wird (siehe Bild) Nun habe ich aber das Problem die entsprechend wichtigen Daten herauszufiltern. Ich habe den String zum Array umgewandelt, bekomme aber je nach Abfrage nur das jeweilige Zeichen des ausgewählten Arrays. Wie deklariere ich das Array um die einzelnen Werte des body (Kommagetrennt) zu erhalten? :gruebel::gruebel: |
AW: Auslesen einer csv.html
Ich hätte hier keine HTML-Datei erwartet.
Wir müssen erst mal die Tags loswerden.
Delphi-Quellcode:
var
p, p2: PAnsiChar; s, csv: string; sl: TStrings; begin s := idHTTP1.Get( 'http://192.168.2.10/csv.html'); p := Pos( '<body>', s)+7; p2 := PosEx( '</body>', s, p); csv := Copy( s, p, p2-p); sl := TStringList.Create; sl.StrictDelimiter := True; sl.CommText := csv; .. Caption := sl[2]; .. sl.Free; ... |
AW: Auslesen einer csv.html
In Diesem Fall funktioniert dessen Beispiel-PHP aber auch nicht.
![]() ![]() ![]() ![]() Sowas geht nicht? Wende dich mal an den Hersteller, denn wenn da wirklich HTML raus kommt, dann ist das definitiv ein Bug. Wobei es ja eigentlich HTML heißt und somit stimmt. :stupid: Entweder es gibt noch einen anderen Weg, das als "richtiges" CSV rauszubekommen und/oder seine Demos sind schrott. So ist die Ausgabe erstmal (ohne Vorverarbeitung/Filterung) nicht benutzbar. |
AW: Auslesen einer csv.html
Vielen Dank für den Code.
StrictDelimiter kennt mein Delphi 7 nicht, es geht aber auch ganz ohne. Wozu ist diese Anweisung? Übrigens musste ich noch etwas ändern, p, p2: PAnsiChar in integer, da sonst inkompatible Typen, und commtext ist sicherlich commatext? Auf jedem Fall war die Antwort schon mal sehr hilfreich, damit komme ich jetzt klar. Übrigens hier mal die Infoseite des Herstellers: ![]() Wenn der IPswitch Internetzugang hat kann man auch für wenig Geld deren Server nutzen. Der Switch schreibt dann eigenständig in die Datenbank. Ein Projekt wäre dann sicherlich auch den Netzwerkverkehr mitzulesen und eine eigene Lösung zu basteln, das geht mir aber jetzt eh zu weit. Nochmals Dank und einen schönen Tag! Paulman |
AW: Auslesen einer csv.html
Der Strictdelimiter sorgt dafür, dass nur angegebene Trenner verwendet wird (Komma bei CommaText); so führen z.B. auch im Text enthaltene Leerzeichen zur Trennung.
|
AW: Auslesen einer csv.html
Alles klar, danke!
|
AW: Auslesen einer csv.html
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz