Shell events - wie in einer TextArea darstellen?

Alle Fragen zur Programmierung, die nicht in die speziellen Themen passen
Antworten
Amnon82
Foriker
Beiträge: 8
Registriert: Sa 26. Aug 2006, 22:54
Kontaktdaten:

Shell events - wie in einer TextArea darstellen?

Beitrag von Amnon82 » So 10. Sep 2006, 19:49

Ich schreib grad an einer GUI für vobcopy. Vobcopy ist ein shell-programm. Wie kann ich die Events, die mir vobcopy normalerweise in einer Shell ausgibt auf eine TextArea in Gambas übertragen und dies nicht nach dem der SHELL-Befehl abgearbeitet ist?

Code: Alles auswählen

PUBLIC SUB copydvd_Click()
DIM f AS File
DIM zeile AS String

  SHELL "vobcopy -i " & dvddrives.text & " -m -o " & outputedit.text & " > /tmp/result"
  OPEN "/tmp/result" FOR READ AS f
    WHILE NOT Eof(f)
      LINE INPUT #f, zeile
      logtext.Text = logtext.Text & zeile
    WEND
  CLOSE f
END

BK
Foriker
Beiträge: 48
Registriert: Do 13. Jul 2006, 11:53
Kontaktdaten:

Re: Shell events - wie in einer TextArea darstellen?

Beitrag von BK » So 10. Sep 2006, 20:30

Siehe http://www.gambasdoc.org/help/lang/shell

Code: Alles auswählen

PUBLIC SUB copydvd_Click()
  SHELL "vobcopy -i " & dvddrives.text & " -m -o " & outputedit.text FOR READ
End

PUBLIC SUB Process_Read()
  DIM sLine AS String
  READ #LAST, sLine, -256
  logtext.Text = logtext.Text & sLine
  logtext.Pos = logtext.Length
END


Grüße,
BK

Amnon82
Foriker
Beiträge: 8
Registriert: Sa 26. Aug 2006, 22:54
Kontaktdaten:

Beitrag von Amnon82 » So 10. Sep 2006, 20:46

@BK. Hatte ich schon ausprobiert. Die logtext bleibt leider leer.
Was könnte es sein?

Hier mal alles was ich bis jetzt probiert hatte:

Code: Alles auswählen

PUBLIC SUB copydvd_Click()
  SHELL "vobcopy -i " & dvddrives.text & " -m -o " & outputedit.text FOR READ
END

PUBLIC SUB Process_Read()
  DIM sLine AS String
  READ #LAST, sLine, -256
  logtext.Text = logtext.Text & sLine
  logtext.Pos = logtext.Length
END

' PUBLIC SUB copydvd_Click()
' DIM Puffer AS String
'   
'   EXEC ["bash", "--noediting"] FOR READ WRITE AS pBash
'   bashcommand = "vobcopy -i " & dvddrives.text & " -m -o " & outputedit.text
'   
'   Puffer = bashcommand & gb.NewLine
'   Puffer = Conv$(Puffer, Desktop.Charset, System.Charset)
'   logtext.Text = logtext.Text & "#" & Puffer
'   
'   PRINT #pBash, Puffer;
'   bashcommand =""
'   
' '  EXEC ["vobcopy -i " & dvddrives.text & " -m -o " & outputedit.text] FOR READ WRITE AS vobcopyprocess
' '  SHELL "vobcopy -i " & dvddrives.text & " -m -o " & outputedit.text & " > /tmp/result"
' '  eventtimer.enabled=TRUE
'END

' PUBLIC SUB Process_Read()
'
' DIM Puffer AS String
'
' LINE INPUT #LAST, Puffer 'Dir auslesen
'
' 'Von System Zeichensatz zum Dekstop Zeichensatz
' Puffer = Conv$(Puffer, System.Charset, Desktop.Charset)
'
' logtext.text = logtext.text & Puffer & gb.NewLine
' logtext.Pos = logtext.Length
'
'END

' PUBLIC SUB Process_Write(sData AS String)
'   logtext.Text = " Process '" & vobcopyProcess.command & "' " & sData
'END

theborg
Foriker
Beiträge: 56
Registriert: Mi 12. Apr 2006, 15:26
Kontaktdaten:

Beitrag von theborg » So 10. Sep 2006, 20:52

shell kann kleine parameter alles was nen lehrzeichen hat wird als parameter angesehen nim exec

Code: Alles auswählen

PUB.......
EXEC ["bdc", "--list", tbSCANPFAD.Text, files, nofiles, .............................. # Lehrzeichen werden automatisch bei jedem parameter eingefügt.
END

PUBLIC SUB Process_Read()
  DIM sLine AS String
  LINE INPUT #LAST, sLine
  IF sLine <> "" THEN taSCANLIST.Text = taSCANLIST.Text & "\n" #Fügt nen zeilenumbruch ein nach jeder zeile die inhalt hat
  taSCANLIST.Text = taSCANLIST.Text & sLine
  taSCANLIST.Pos = Len(taSCANLIST.text) # Autoscorling
END


Hab einige verbesserungen drinne die nicht im faq stehen aber recht brauchbar sind

Amnon82
Foriker
Beiträge: 8
Registriert: Sa 26. Aug 2006, 22:54
Kontaktdaten:

Beitrag von Amnon82 » So 10. Sep 2006, 21:02

Na dann hilf mir mal den shell-befehl in nen exec-befehl umzusetzen:

Code: Alles auswählen

EXEC [ "vobcopy" , " -i " & dvddrives.text , " -m ", "-o " & outputedit.text ] FOR READ
funktioniert nicht.

In ner terminal geb ich zb. das ein:

vobcopy -i <pfad zum dvd-lw> -m -o <pfad zum ausgabeordner>

mein aktueller code:

Code: Alles auswählen

PUBLIC SUB copydvd_Click()
  EXEC ["vobcopy","-i ",dvddrives.text,"-m ","-o ",outputedit.text] FOR READ
END

PUBLIC SUB Process_Read()
  DIM sLine AS String
'  READ #LAST, sLine, -256
  LINE INPUT #LAST, sLine
  IF sLine <> "" THEN logtext.Text = logtext.Text & "\n"
  logtext.Text = logtext.Text & sLine
  logtext.Pos = Len(logtext.text)
END


EXEC läuft nicht ... :(

Code: Alles auswählen

SHELL "vobcopy -i " & dvddrives.text & " -m -o " & outputedit.text FOR READ

startet mit den richtigen parametern, nur werden die events nicht angezeigt.

Sourcecode of DVD2HDD

BK
Foriker
Beiträge: 48
Registriert: Do 13. Jul 2006, 11:53
Kontaktdaten:

Beitrag von BK » So 10. Sep 2006, 21:23

Amnon82 hat geschrieben:

Code: Alles auswählen

SHELL "vobcopy -i " & dvddrives.text & " -m -o " & outputedit.text FOR READ

startet mit den richtigen parametern, nur werden die events nicht angezeigt.


Kann es sein, dass vobcopy nicht auf die Standartausgabe sondern auf die Standartfehlerausgabe schreibt?

Probier mal

Code: Alles auswählen

PUBLIC SUB Process_Error(sLine AS String)
  logtext.Text = logtext.Text & sLine
  logtext.Pos = Len(logtext.text)
END

Amnon82
Foriker
Beiträge: 8
Registriert: Sa 26. Aug 2006, 22:54
Kontaktdaten:

Beitrag von Amnon82 » So 10. Sep 2006, 21:26

danke. das wars ;)

andere Frage:

Code: Alles auswählen

libdvdread: Elapsed time 0
   0MB of  220MB written ( 0.1 % )    0MB of  220MB written ( 0.2 % )    1MB of  220MB written ( 0.3 % )    1MB of  220MB written ( 0.4 % )    1MB of  220MB written ( 0.4 % )    1MB of  220MB written ( 0.5 % )    1MB of  220MB written ( 0.6 % )    2MB of  220MB written ( 0.7 % )    2MB of  220MB written ( 0.8 % )    2MB of  220MB written ( 0.9 % )    2MB of  220MB written ( 1.0 % )    2MB of  220MB written ( 1.1 % )    3MB of  220MB written ( 1.2 % )    3MB of  220MB written ( 1.3 % )    3MB of  220MB written ( 1.3 % )    3MB of  220MB written ( 1.4 % )    3MB of  220MB written ( 1.5 % )    4MB of  220MB written ( 1.6 % )    4MB of  220MB written ( 1.7 % )    4MB of  220MB written ( 1.8 % )    4MB of  220MB written ( 1.9 % )    4MB of  220MB written ( 2.0 % )    5MB of  220MB written ( 2.1 % )    5MB of  220MB written ( 2.2 % )    5MB of  220MB written ( 2.2 % )    5MB of  220MB written ( 2.3 % )    5MB of  220MB written ( 2.4 % )    6MB of  220MB written ( 2.5 % )    6MB of  220MB written ( 2.6 % )    6MB of  220MB written ( 2.7 % )    6MB of  220MB written ( 2.8 % )    6MB of  220MB written ( 2.9 % )    7MB of  220MB written ( 3.0 % )    7MB of  220MB written ( 3.0 % )


Die Stats schreibt er in eine Zeile. Wie könnte man diese auslesen?

Nun hab ichs geschafft >> DVD2HDD Homepage

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste