COnsolen ausgabe auf textfile umlenken

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

Icke hat geschrieben:Oder auf diese Weise direkt in ein String ohne den Umweg Datei:

Code: Alles auswählen

Abfrage = RunProgram("ping", "192.168.178.1", "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide)

If Abfrage
 While ProgramRunning(Abfrage)
 Output$ + ReadProgramString(Abfrage) + Chr(13)
 Wend
EndIf

MessageRequester("Output", Output$)
Jo schön und gut ... und wie läuft das mit PB3.9x ?

da gibts leider nichts dergleichen....

Ich versuche mit RunProgram den Ping - Befehl zu starten

also RunProgram("Ping.exe "+ip$,1)

nun denk ich mir um das ergebnis auszuwerten lenk ich die ausgabe einfach in eine Textdatei um ABER irgendwie schreibt der keine datei.

Wenn ich den befehl per Eingabeaufforderung eintippe

Ping 192.168.0.1 >demo.txt

erstellt er ein Textfile

aber per runprogram nicht.

Wieso,warum,weshalb.... ich bin schon mit den zähnen im schreibtisch ;)

(oder es erklärt mir jemand wie ich einen ICMP - Ping an einen Server sende und das ergebnis auswerten kann .... geht um das etwas angegraute Freelancer und bei einem ICMP Ping rückt er als Antwort auch die Anzahl der Spieler die auf dem server sind und die maximalen spieler...)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> Jo schön und gut ... und wie läuft das mit PB3.9x ?
Garnicht, bzw. per API selber machen, aber warum datest Du nicht ab?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

ts-soft hat geschrieben:>> Jo schön und gut ... und wie läuft das mit PB3.9x ?
Garnicht, bzw. per API selber machen, aber warum datest Du nicht ab?
Updaten... dazu muss ich doch erstmal Kohle überhaben ;)

Nunja API ? ähh..

Tja also ich bin da eher ein Anfänger, ich erinnere mich nur noch damals an den Amiga und C (ich kann C nicht, aber da war was mit stdout ;) )

und nun frag ich mich mie das vonstatten gehen soll ...

Also das Dos-Programm nennt sich FLPing und gibt gleich ne ganze Reihe von Textzeilen auf die Console.... je nachdem wieviele pings er machen soll....

Und maschinensprachebewandert bin ich auch nicht wirklich von wegen API ? Was ist das eigentlich ....
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Bisonte hat geschrieben:Updaten... dazu muss ich doch erstmal Kohle überhaben ;)
Diese Aussage mußt Du mir erklären, als rechtmässiger Besitzer der Version
3.9x stehen Dir lebenslange kostenlose Updates zur Verfügung.

Also wie Du schon sagtest, spare, besorge die rechtmässige Version und
melde Dich wieder :evil:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

ts-soft hat geschrieben:
Bisonte hat geschrieben:Updaten... dazu muss ich doch erstmal Kohle überhaben ;)
Diese Aussage mußt Du mir erklären, als rechtmässiger Besitzer der Version
3.9x stehen Dir lebenslange kostenlose Updates zur Verfügung.

Also wie Du schon sagtest, spare, besorge die rechtmässige Version und
melde Dich wieder :evil:
Ups böser Fehler : Topos Version ist nicht 3.9x ... Verwirr mich doch nicht ;)

Ist natürlich 3.30 ... da ist leider kein updaterecht drauf. und wie ich gesehen habe kostet PB 79 € oder nicht...

Die Cd lag in der Pyramide für 10 DM Damals noch... da wo auch die Amigaversion 2 mit drauf ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Bisonte hat geschrieben: Ups böser Fehler : Topos Version ist nicht 3.9x ... Verwirr mich doch nicht ;)
Naja, werde Dir mal glauben :wink:
Hier mal eine etwas ältere Version, die stammt Original von Rings, hab
aber für meine Bedürfnisse div. Änderungen durchgeführt, weiß also nicht
ob es so überhaupt verwendbar ist:

Code: Alles auswählen

Procedure.s CaptureDOSOutput(AppName.s, CommandLine.s, MemoryBuffer.l)
  If AppName <> ""
    CommandLine = " " + CommandLine
  EndIf
  proc.PROCESS_INFORMATION
  start.STARTUPINFO
  sa.SECURITY_ATTRIBUTES
  hReadPipe.l
  hWritePipe.l
  lngBytesread.l
  Result.l
  mOutputs.s = ""
  strBuff.s = Space(MemoryBuffer)
  sa\nLength = SizeOf(SECURITY_ATTRIBUTES)
  sa\bInheritHandle = 1
  sa\lpSecurityDescriptor = 0
  If CreatePipe_(@hReadPipe, @hWritePipe, @sa, 0) = #False
    mOutputs = " CreatePipe failed "
  EndIf
  start\cb = SizeOf(STARTUPINFO)
  start\dwFlags = #STARTF_USESHOWWINDOW | #STARTF_USESTDHANDLES 
  start\hStdOutput = hWritePipe
  start\hStdError = hWritePipe
  If AppName = ""
    Result = CreateProcess_(0, @CommandLine, sa, sa, 1, #NORMAL_PRIORITY_CLASS, 0, 0, @start, @proc)
  Else
    Result = CreateProcess_(@AppName, @CommandLine, sa, sa, 1, #NORMAL_PRIORITY_CLASS, 0, 0, @start, @proc)
  EndIf
  If Result = #False
    mOutputs = mOutputs + " File Or command not fount "
  Else
    CloseHandle_(hWritePipe)
    While Result <> 0
      Result = ReadFile_(hReadPipe, strBuff, MemoryBuffer, @lngBytesread, 0)
      If lngBytesread > 0
        mOutputs = mOutputs + Left(strBuff, lngBytesread)
      EndIf
    Wend
    CloseHandle_(proc\hProcess)
    CloseHandle_(proc\hThread)
    CloseHandle_(hReadPipe)
  EndIf
  ProcedureReturn mOutputs
EndProcedure
Der Code wurde in PB3.81 geschrieben.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

Ich bedanke mich...

Nachdem ich rausgefunden habe das MemoryBuffer die Anzahl der Zeichen ist, die die Antwort haben könnte, funtioniert die Procedure tadellos !

zu Topos:

Fast alle Codeschnipsel funktionieren mit der Topos version sofern sie nicht irgendwas extremes an sich haben.

Ich bastel aber eigentlich nur an mini progrämmchen wo ich grafikschnickschnack und so nicht brauche (OpenConsole ;) )

und wenn man die openwindow befehle aus allem rauslässt läuft eigentlich fast alles ....


(Ich hab mir die CD Damals wegen dem Amiga geholt .... Der einzig wahre Computer :allright: )
Antworten