h5n1
Goto Top

Suche und Ersetzen bzw. Anzeigen VB6

Hallo ich habe folgendes Problem:
ich habe eine Textdatei mit etwa folgendem Inhalt
NETWORK
TITLE =Taktgeber

SET ;
U "M200.0"; Takt Periode 0,1 sec
FP "M202.0";
Flankenmerker
= "M201.0"; Flanke 0,1 sec

U "M200.3";
Takt Periode 0,5 sec
FP "M202.1"; Flankenmerker
= "M201.1";
Flanke 0,5 sec

U "M200.5"; Takt Periode 1 sec
FP "M202.2";
Flankenmerker
= "M201.2"; Flanke 1 sec
NETWORK
TITLE =Takt 6 sec

SET ;
U "M201.2";
Flanke 1 sec
SPBN fl6t;

L "DB_Kommunikation OP".Taktgeber.Wert_6_sec; //Sekunden zählen

Diese Textdatei möchte ich Zeilenweise in VB einlesen.
(soweit kein Problem)

Jetzt möcht ich aber wenn zwei Slash in einer Zeile hintereinander sind den Text zwischen den Doppel-Slash und dem am Zeilenende befindlichen CrLf auf einem Label oder in einer Textbox ausgeben und nach einem Click zur nächsten Zeile mit dem Doppel-Slash gelangen und wieder anzeigen.

Geht das - nach ASCII-Zeichen suchen?
Eventuell kleines Bespiel wäre echt super.
Vielen Dank schon mal im voraus.

Gruß Frank

## Ich mache keine rechtscheibfehler, ich bin euch nur paar reformen voraus... face-smile

Content-Key: 155126

Url: https://administrator.de/contentid/155126

Printed on: April 23, 2024 at 15:04 o'clock

Member: Biber
Biber Nov 15, 2010 at 18:40:20 (UTC)
Goto Top
Moin H5N1,

sorry, bei der eigentlichen Frage kann ich nicht helfen - ich kenn mich sowohl mit VB wie auch mit 6 nur rudimentär aus.

Aber damit die geneigten Fachschroter erahnen können, wo du denn als Einziger an diesem Montag Doppel-Slashes meinst zu sehen,
deshalb mach ich die mal sichtbar mit ein paar Codetag-Restposten. Die liegen eh wie Blei in den Regalen hier face-sad

Dein Text sieht wie bereits gepostet so aus :

NETWORK
TITLE =Taktgeber

SET ;
U "M200.0"; Takt Periode 0,1 sec
FP "M202.0";
Flankenmerker
= "M201.0"; Flanke 0,1 sec

U "M200.3";
Takt Periode 0,5 sec
FP "M202.1"; Flankenmerker
= "M201.1";
Flanke 0,5 sec

U "M200.5"; Takt Periode 1 sec
FP "M202.2";
Flankenmerker
= "M201.2"; Flanke 1 sec
NETWORK
TITLE =Takt 6 sec

SET ;
U "M201.2";
Flanke 1 sec
SPBN fl6t;

L "DB_Kommunikation OP".Taktgeber.Wert_6_sec; //Sekunden zählen


..sieht mit Code-Formatierung ohne Zeilennummern ( < code type=plain > ) so aus:
NETWORK
TITLE =Taktgeber

      SET   ; 
      U     "M200.0"; //Takt Periode 0,1 sec
      FP    "M202.0"; //Flankenmerker
      =     "M201.0"; //Flanke 0,1 sec

      U     "M200.3"; //Takt Periode 0,5 sec
      FP    "M202.1"; //Flankenmerker
      =     "M201.1"; //Flanke 0,5 sec

      U     "M200.5"; //Takt Periode 1 sec
      FP    "M202.2"; //Flankenmerker
      =     "M201.2"; //Flanke 1 sec   
NETWORK
TITLE =Takt 6 sec

      SET   ; 
      U     "M201.2"; //Flanke 1 sec
      SPBN  fl6t; 

      L     "DB_Kommunikation OP".Taktgeber.Wert_6_sec; //Sekunden zählen

...und mit Codeformatierung mit Zeilennummern ( < code > )so aus:
NETWORK
TITLE =Taktgeber

      SET   ; 
      U     "M200.0"; //Takt Periode 0,1 sec  
      FP    "M202.0"; //Flankenmerker  
      =     "M201.0"; //Flanke 0,1 sec  

      U     "M200.3"; //Takt Periode 0,5 sec  
      FP    "M202.1"; //Flankenmerker  
      =     "M201.1"; //Flanke 0,5 sec  

      U     "M200.5"; //Takt Periode 1 sec  
      FP    "M202.2"; //Flankenmerker  
      =     "M201.2"; //Flanke 1 sec     
NETWORK
TITLE =Takt 6 sec

      SET   ; 
      U     "M201.2"; //Flanke 1 sec  
      SPBN  fl6t; 

      L     "DB_Kommunikation OP".Taktgeber.Wert_6_sec; //Sekunden zählen  

Vielleicht kann die ja einer der VB-Bruzzler jetzt besser helfen.

Grüße
Biber
Member: bastla
bastla Nov 15, 2010 at 20:20:46 (UTC)
Goto Top
Hallo H5N1!

Der folgende VBS-Schnipsel sollte sich einigermaßen schmerzfrei nach VB6 (derartiges habe ich dann doch nicht mehr bei der Hand face-wink) portieren lassen (und macht hoffentlich das, was Du erreichen wolltest face-wink):
Set fso = CreateObject("Scripting.FileSystemObject")  
Set File = fso.OpenTextFile("D:\Textdatei.txt")  

Do Until File.AtEndOfStream
    Line = File.ReadLine
    Pos = InStrRev(Line, "//")  
    If Pos > 0 Then
        InterestingPart = Mid(Line, Pos + 2)
        WScript.Echo InterestingPart
    End If
Loop
File.Close
Zum Testen an der Kommandozeile mit
cscript //nologo Schnipsel.vbs
starten ...

Grüße
bastla

PS.: @Biber: Thanks face-smile - auf Basis des formatierten Beispiels ließ sich dann doch etwas mit dem Ganzen anfangen ...
Member: Nadm4you
Nadm4you Nov 15, 2010 at 20:51:45 (UTC)
Goto Top
Zitat von @bastla:
Hallo H5N1!

Der folgende VBS-Schnipsel sollte sich einigermaßen schmerzfrei nach VB6 (derartiges habe ich dann doch nicht mehr bei der
Hand face-wink) portieren lassen (und macht hoffentlich das, was Du erreichen wolltest face-wink):
Set fso = CreateObject("Scripting.FileSystemObject")  
> Set File = fso.OpenTextFile("D:\Textdatei.txt")  
> 
> Do Until File.AtEndOfStream
>     Line = File.ReadLine
>     Pos = InStrRev(Line, "//")  
>     If Pos > 0 Then
>         InterestingPart = Mid(Line, Pos + 2)
>         WScript.Echo InterestingPart
>     End If
> Loop
> File.Close
> 
Zum Testen an der Kommandozeile mit
cscript //nologo Schnipsel.vbs
> 
starten ...

Grüße
bastla

PS.: @Biber: Thanks face-smile - auf Basis des formatierten Beispiels ließ sich dann doch etwas mit dem Ganzen anfangen ...


Nicht immer nur fertige Sachen suchen, sondern auch selbst mal Hirnschmalz einsetzen, deshalb mein VB 6 Code zur Anregung

Public break As Boolean
Private Sub Command1_Click()
break = True
End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub Form_Load()

Dim data As String 'Auffangvariable für den einzulesenden String definieren
Dim v() As String 'Splitstring dimensionieren ist ein Array ohne Dimensions Dimensions werden durch die Split-Fuunktion zugewiesen
Form1.Show
Open "c:\temp\test.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, data
v = Split(data, "//")
If UBound(v) > 0 Then
Text1.Text = v(1)
Do
DoEvents
Loop Until break = True
Debug.Print Text1.Text
break = False
End If
Loop
End
End Sub

Gruß
Nadm4you
Member: bastla
bastla Nov 15, 2010 at 21:04:54 (UTC)
Goto Top
Hallo Nadm4you!

"Split()" ist auch schön ... face-smile

... allerdings wäre
Text1.Text = v(UBound(v))
genauer als
Text1.Text = v(1)
BTW:
Nicht immer nur fertige Sachen suchen, sondern auch selbst mal Hirnschmalz einsetzen
Wer ist denn der Adressat dieser Aufforderung?

Grüße
bastla

P.S.: Damit Du nicht suchen musst face-wink: -Formatierung ...
Member: H5N1
H5N1 Nov 16, 2010 at 12:07:28 (UTC)
Goto Top
Vielen Dank für die schnelle Hilfe .
Das ich nur nach dem Doppel-Slash suchen muss und dann weitermachen kann hab ich gar nicht gecheckt.
Naja, manchmal sieht man den Wald vor lauter Bäume nicht.

Nochmal Vielen Dank für die Hilfe - Gruß Frank
Member: Biber
Biber Nov 16, 2010 at 15:58:47 (UTC)
Goto Top
[OT, aber völlig]

Zitat von @H5N1:
## Ich mache keine rechtscheibfehler, ...
Jetzt endlich hab ich Pointe verstanden... sozusagen scheibchenweise ....

Menno, fast eine vollen Tag später...*grmpfff*

[/OT, aber völlig]