ERLEDIGT
NEIN
NEIN
ANTWORTEN
13
13
ZUGRIFFE
812
812
EMPFEHLEN
-
gibt es eine möglich nur einen Teil einer Textdatei einzulesen?
Die Textdatei wird von Digitemp erzeugt (Temperatur messungsprogramm):
Apr 09 17:37:14 Sensor 0 C: 23.50 F: 74.30
Apr 09 17:37:15 Sensor 1 C: 23.69 F: 74.64
Was ich brauche ist nur die beiden Temperaturen 23.50 und 23.69
Gibts da eine gute möglichkeit?
-
Mit Regulären Ausdrücken ist das möglich!
Google mal nach "Regular Expressions".
Dann liest du die Datei Zeilenweise ein und über jede Ziele jagst du dann ein Pattern das dir jeden Wert der
rausfiltert, wobei x für eine Zahl steht.Code :1
xx.xx
Also 2 Zahlen gefolgt von einem Punkt gefolgt von 2 Zahlen, das ganze machst du dann mit preg_match()Geändert von sexmagic (09.04.07 um 19:19 Uhr)
;)
-
Ich hab hier eine gute seite gefunden:
http://www.vb-fun.de/cgi-bin/loadfra.../tip0426.shtml
wenn ich das aber so mache bekomme ich beim compilieren diesen Fehler:
User-defined type not defined
bei "Dim objRegExp As RegExp"
Ich neme an dass ich RegExp noch irgendwie laden muss oder? doch wo?
-
Sorry ich hab mich verlesen, von Visual Basic hab ich keine Ahnung

Aber Reguläre ausdrücke kannst du da sicher auch verwenden, aber dazu musst du dir sicher erst ne Komponente besorgen, ich hab keine Ahnung von VB.
Das Pattern zum finden der Temp ist aber bei jeder sprache fast identisch wenn es die PCRE Perl Lib verwendet, ich hab mal sowas mit Delphi gemacht da gabs jedenfalls eine kostenlose Komponente.
Es tut mir leid ich kann dir mit VB leider nicht aushelfen.;)
-
hehe ok trozdem danke
Ist ja auch bei PHP zimlich ähnlich. Ich muss einfach irgendwo noch die DLL finden.
-
ok habs jetzt geschaft. die frage ist nur, wie nun mit dem syntax nur zu den 4 zahlen komme.
Die sollten glaub bei PHP, Delfi, VB usw gleich sein. Kann mir jemand helfen?
-
So habs mal schnell in php nachgebaut das Pattern t wenn du die Perl Lib verwendest!
Also wie du das nun in VB verwenden musst weis ich nicht aber mitPHP-Code:<?
$string = 'Apr 09 17:37:14 Sensor 0 C: 23.50 F: 74.30 Apr 09 17:37:15 Sensor 1 C: 23.69 F: 74.64';
$pattern = '#[B]\d{2}\.\d{2}[/B]#';
preg_match($pattern, $string, $found);
print_r($found);
?>
Werden immer xx.xx gefunden!Code :1
\d{2}\.\d{2}
grüsse;)
-
Ja das ist schonmal nicht schlecht
Nur das problem ist, das alles was ich angebe entfernt wird. also wird alles drin gelassen ausser eben die Temperatur. es müsste also genau umgekehrt sein.
Ich weiss nicht ob man bei VB die ausgeschnittenen zahlen dann verwendet werden können.
-
Dann hast du das Pattern falsch rum verwendet.
Um einen Ausdruck zu negieren muss ein [^pattern] das pattern umschliessen.
Versuch also mal:
Code :1
[^\d{2}\.\d{2}];)
-
hmm scheint wohl nur bei PHP so zu funktionieren.
mit [^\d{2}\.\d{2}] wird alles ausser den zahlen und . herausgefiltert. In einer erklärung für ^ habe ich das gefunden:
^ Matches the position at the beginning of the input string. If the RegExp object's Multiline property is set, ^ also matches the position following '\n' or '\r'.
-
falls es ev hilft. So weit wäre ich schon gekommen:
Apr 09 22:13:12 Sensor 1 C: 24.25 F: 75.65 gibt:
09 1 2425 7565
also müsste nur noch 09, 1 und 7565 weg.
Kann man irgendwie eine zahl entfernen die grösser als 3000 ist?
eigentlich müsste mit "\d{1}" ja alles zahlen mit 1 stelle entfernt werden. allerdings wird dann auch 2425 entfernt.
-
09.04.07 22:18 #12
Wieso so umständlich über eine Extra DLL? Ein gutes altes InStr() genügt doch auch.
Ich nehme mal an, du weisst schon, wie man eine Textdatei zeilenweise einliest (wenn nicht meld dich, ich schreib gerade ein Tutorial dazu), dann brauchst du nur noch mittels InStr() die beiden Buchstaben davor bzw. dahinter suchen:
Nix kompliziert mit Regular Expressions, einfach mit InStr() und Mid().Code vb:1 2 3 4 5
'Nehme mal an, die Zeile steh in der Variable sZeile lDavor = InStr(sZeile, "C:") + 2 lDanach = InStr(lDavor, sZeile, "F:") sgWert = Trim(Mid(sZeile, lDavor, lDanach - lDavor)) 'Wenn du eine Zahl willst, wandle sgWert noch mit Val() in eine Zahl
Der Doc!A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
B: Die Scrollbar da rechts ist dir schon mal aufgefallen?
-
Darum hab ich gesagt es muss Gruppiert werden und das bedeutet in eckige Klammern gesetzt werden!
Also es gibt nur 2 Fehlerquellen:
1. Du nutzt nicht die PCRE Perl Lib sondern eine andere Regex Komponente
2. Du verwendest das Pattern falsch
Ich glaube an einem der 2 Scheiterts.
EDIT:
Warscheinlich ist die Variante DrSoong besser!!;)
-
so habs jetzt mit der lösung von DrSoong fertiggebracht. Anders wärs bestimmt auch gegangen
aber so funktionierts jetzt 
Vielen dank euch beiden!
Ähnliche Themen
-
Einlesen und Auslesen einer Textdatei in Java
Von Homiee im Forum JavaAntworten: 26Letzter Beitrag: 26.03.12, 17:55 -
Zwei leerzeilen beim Einlesen einer Textdatei
Von Matze im Forum JavaAntworten: 3Letzter Beitrag: 03.07.09, 11:43 -
Einlesen einer Textdatei in einen Array
Von Morphinus21 im Forum JavaAntworten: 28Letzter Beitrag: 03.12.07, 15:00 -
[ansi C]Einlesen einer Textdatei
Von Anime-Otaku im Forum C/C++Antworten: 11Letzter Beitrag: 21.09.06, 10:18 -
[C++] Die einzelnen Zeilen einer Textdatei einlesen
Von onkelv im Forum C/C++Antworten: 2Letzter Beitrag: 07.10.04, 23:43





Zitieren

Login





