Seite 1 von 2

RunProgram(File$)

Verfasst: 20.03.2010 21:30
von dl5ndh
Hallo,
ich möchte eine Textdatei innerhalb des Programmes mit dem Standard-Editor
auf dem PC öffnen.

Ich benutze dazu RunProgram(DATEINAME).

Als Standardprogramm habe ich WordPad. Nach dem Aufruf wird auch
WordPad mit dem Inhalt von DATEINAME geöffnet, nur komischerweise
nicht nur einmal, sondern 2 Mal. Ich muß dann also 2 Mal WordPad wieder
schließen. Weiß jemand, was man machen muß, damit sich der Texteditor
nur einmal öffnet?

Gruß
Gerhard

Re: RunProgram(File$)

Verfasst: 20.03.2010 21:36
von c4s
Poste mal den kompletten Code den du benutzt. Bestimmt hat sich da ein Fehler eingeschlichen.

Re: RunProgram(File$)

Verfasst: 20.03.2010 21:40
von ts-soft
Ich weiß nicht, was an Deiner Config falsch ist, das es zweimal kommt, aber Du kannst es ja mal so
probieren:

Code: Alles auswählen

Define.s File = #DQUOTE$ + #PB_Compiler_Home + "SDK\Readme.txt" + #DQUOTE$
RunProgram("wordpad", File, GetPathPart(File))
Wobei man für unformatierte Text besser Notepad nutzt!

Re: RunProgram(File$)

Verfasst: 20.03.2010 21:54
von dl5ndh
Hier die aufgerufene Prozedur:

Code: Alles auswählen

Procedure EXPORT_ADIF()
;GLOBALE VARIABLE TRZ$ (Trennzeichen)
Protected FILE.s, titel$, standarddatei$,pattern$,patternposition.b, ZEILE$, anzahl.l, AnzBytes.l, markiert.s
Protected a$, b$, c$, d$, e$, f$, g$, h$, i$, j$, k$, l$, m$, n$, o$, p$, c2$, qs$, qr$, begriff$, dxcc$
titel$="LOGBUCH  [EXPORT > ADIF ]"
standarddatei$=ReplaceString(ReplaceString(eigenes_call,Chr(216),"0",1,1),"/","~",1,1)+"_EXPORT_"+FormatDate("%dd%mm%yyyy%hh%ii",Date())+".adi"
pattern$="ADIF-Dateien | *.adi"
FILE = SaveFileRequester(titel$,standarddatei$,pattern$,patternposition)

If FILE ="":ProcedureReturn(i):EndIf
anzahl = CountGadgetItems(#LIGadget_3)
If anzahl = 0:MessageRequester("LOGBUCH  [ EXPORT > ADIF ]","ES SIND KEINE EINTRÄGE IN DER LISTE"):ProcedureReturn(i):EndIf
;Liste abarbeiten *******
;Speicherbereich erstellen
*beginn=AllocateMemory(20,5000000000,0) 
*zeiger=*beginn
AnzBytes=0

;HEADER EINTRAGEN
;1.ZEILE
ZEILE$="PureLOG Logbuchprogramm [2004-"+FormatDate("%yyyy",Date())+"]"+Chr(10)
AnzBytes=AnzBytes+Len(ZEILE$)
PokeS(*zeiger,ZEILE$,Len(ZEILE$))
*zeiger=*zeiger+Len(ZEILE$)
;2.ZEILE
ZEILE$="http://purelog.de"+Chr(10)
AnzBytes=AnzBytes+Len(ZEILE$)
PokeS(*zeiger,ZEILE$,Len(ZEILE$))
*zeiger=*zeiger+Len(ZEILE$)
;VERSION ADIF EINTRAGEN
ZEILE$="<ADIF_VER:4>1.00"+Chr(10)
AnzBytes=AnzBytes+Len(ZEILE$)
PokeS(*zeiger,ZEILE$,Len(ZEILE$))
*zeiger=*zeiger+Len(ZEILE$)
;EOH EINTRAGEN
ZEILE$="<EOH>"+Chr(10)
AnzBytes=AnzBytes+Len(ZEILE$)
PokeS(*zeiger,ZEILE$,Len(ZEILE$))
*zeiger=*zeiger+Len(ZEILE$)
;LEERZEILE
ZEILE$=""+Chr(10)
AnzBytes=AnzBytes+Len(ZEILE$)
PokeS(*zeiger,ZEILE$,Len(ZEILE$))
*zeiger=*zeiger+Len(ZEILE$)

markiert = "NEIN"
;Feststellen, ob was markiert ist,oder nicht
For i=0 To CountGadgetItems(#LIGadget_3)-1
    If GetGadgetItemState(#LIGadget_3,i) <> 0: markiert = "JA":Break:EndIf
Next i


;AB HIER DIE DATEN EINTRAGEN


Select markiert
        Case "JA"


      For i=0 To CountGadgetItems(#LIGadget_3)-1
      If GetGadgetItemState(#LIGadget_3,i) <> 0
      ;ZEILE 1
      a$=ReplaceString(GetGadgetItemText(#LIGadget_3,i,1),Chr(216),"0",1,1);RUFZEICHEN
      b$=ReplaceString(GetGadgetItemText(#LIGadget_3,i,2),Chr(216),"0",1,1);DXCC
      ;DXCC-NR feststellen
      Restore ADIF
      Repeat
          Read begriff$
          If StringField(begriff$,1,"#")=b$:dxcc$=StringField(begriff$,2,"#"):Break:EndIf
      Until begriff$="ADIFENDE" 
      
      
      c$=LTrim(GetGadgetItemText(#LIGadget_3,i,5));FREQUENZ
      ;BAND HERAUSFILTERN
      If ValF(c$)>=1.800 And Val(c$)<=1.980:c2$="160M":EndIf
      If ValF(c$)>=3.500 And Val(c$)<=3.800:c2$="80M":EndIf
      If ValF(c$)>=7.000 And Val(c$)<=7.200:c2$="40M":EndIf
      If ValF(c$)>=10.100 And ValF(c$)<=10.150:c2$="30M":EndIf
      If ValF(c$)>=14.000 And ValF(c$)<=14.350:c2$="20M":EndIf
      If ValF(c$)>=18.068 And ValF(c$)<=18.168:c2$="17M":EndIf
      If ValF(c$)>=21.000 And ValF(c$)<=21.450:c2$="15M":EndIf
      If ValF(c$)>=24.890 And ValF(c$)<=24.990:c2$="12M":EndIf
      If ValF(c$)>=28.000 And ValF(c$)<=29.700:c2$="10M":EndIf
      If ValF(c$)>=50.000 And ValF(c$)<=52.000:c2$="6M":EndIf
      If ValF(c$)>=144.000 And ValF(c$)<=146.000:c2$="2M":EndIf
      If ValF(c$)>=430.000 And ValF(c$)<=440.000:c2$="70CM":EndIf
      If ValF(c$)>=1240.000 And ValF(c$)<=1300.000:c2$="23CM":EndIf
      If ValF(c$)>=2320.000 And ValF(c$)<=2450.000:c2$="13CM":EndIf
      If ValF(c$)>=5650.000 And ValF(c$)<=5850.000:c2$="6CM":EndIf
      If ValF(c$)>=10000.000 And ValF(c$)<=10500.000:c2$="3CM":EndIf
      ;BAND
      d$=GetGadgetItemText(#LIGadget_3,i,6);MODE
      ZEILE$="<CALL:"+Str(Len(a$))+">"+a$+"  <DXCC:"+Str(Len(dxcc$))+":N>"+dxcc$+"  <ENTITY:"+Str(Len(b$))+":C>"+b$+"  <FREQ:"+Str(Len(c$))+">"+c$+"  <BAND:"+Str(Len(c2$))+">"+c2$+"  <MODE:"+Str(Len(d$))+">"+d$+Chr(10)
      AnzBytes=AnzBytes+Len(ZEILE$)
      PokeS(*zeiger,ZEILE$,Len(ZEILE$)) 
      *zeiger=*zeiger+Len(ZEILE$)
;ZEILE 2
      e$=GetGadgetItemText(#LIGadget_3,i,3);DATUM
      f$=GetGadgetItemText(#LIGadget_3,i,4);UTC
      ZEILE$="     <QSO_DATE:8>"+StringField(e$,3,".")+StringField(e$,2,".")+StringField(e$,1,".")+"  <TIME_ON:4>"+StringField(f$,1,":")+StringField(f$,2,":")+"  <TIME_OFF:4>"+StringField(f$,1,":")+StringField(f$,2,":")+Chr(10)
      AnzBytes=AnzBytes+Len(ZEILE$)
      PokeS(*zeiger,ZEILE$,Len(ZEILE$)) 
      *zeiger=*zeiger+Len(ZEILE$)
;ZEILE 3
      g$=GetGadgetItemText(#LIGadget_3,i,7);RSTAB
      h$=GetGadgetItemText(#LIGadget_3,i,8);RSTAN
      ZEILE$="     <RST_SENT:"+Str(Len(g$))+">"+g$+"  <RST_RCVD:"+Str(Len(h$))+">"+h$+Chr(10)
      AnzBytes=AnzBytes+Len(ZEILE$)
      PokeS(*zeiger,ZEILE$,Len(ZEILE$)) 
      *zeiger=*zeiger+Len(ZEILE$)
;ZEILE 4
      i$=GetGadgetItemText(#LIGadget_3,i,9);NAME
      j$=GetGadgetItemText(#LIGadget_3,i,10);QTH
      k$=ReplaceString(GetGadgetItemText(#LIGadget_3,i,11),Chr(216),"0",1,1);DOK
      ZEILE$="     <NAME:"+Str(Len(i$))+">"+i$+"  <QTH:"+Str(Len(j$))+">"+j$+"  <DOK:"+Str(Len(k$))+":C>"+k$+Chr(10)
      AnzBytes=AnzBytes+Len(ZEILE$)
      PokeS(*zeiger,ZEILE$,Len(ZEILE$)) 
      *zeiger=*zeiger+Len(ZEILE$)
;ZEILE 5
      l$=Left(ReplaceString(GetGadgetItemText(#LIGadget_3,i,12),Chr(216),"0",1,1),2)+"-"+Right(ReplaceString(GetGadgetItemText(#LIGadget_3,i,12),Chr(216),"0",1,1),3);IOTA
      If Len(l$)<4:l$="":EndIf
      m$=ReplaceString(GetGadgetItemText(#LIGadget_3,i,13),Chr(216),"0",1,1);LOCATOR
      ZEILE$="     <IOTA:"+Str(Len(l$))+">"+l$+"  <GRIDSQUARE:"+Str(Len(m$))+">"+m$+Chr(10)
;ZEILE 6
      n$=ReplaceString(GetGadgetItemText(#LIGadget_3,i,14),Chr(216),"0",1,1);MANAGER
      o$=GetGadgetItemText(#LIGadget_3,i,15);QSL
      If o$="bestätigt":qs$="Y":qr$="Y"
            ElseIf o$="keine QSL":qs$="N":qr$="N"
            ElseIf o$="direkt":qs$="Y":qr$="R"
            ElseIf o$="Büro":qs$="Y":qr$="R"
      EndIf
      p$=GetGadgetItemText(#LIGadget_3,i,16);BEMERKUNGEN
      ZEILE$="<QSL_VIA:"+Str(Len(n$))+">"+n$+"  <QSL_SENT:1>"+qs$+"  <QSL_RCVD:1>"+qr$+"  <COMMENT:"+Str(Len(p$))+">"+p$+Chr(10)
      AnzBytes=AnzBytes+Len(ZEILE$)
      PokeS(*zeiger,ZEILE$,Len(ZEILE$)) 
      *zeiger=*zeiger+Len(ZEILE$)
;ZEILE 7
      ZEILE$="<EOR>"+Chr(10)
      AnzBytes=AnzBytes+Len(ZEILE$)
      PokeS(*zeiger,ZEILE$,Len(ZEILE$)) 
      *zeiger=*zeiger+Len(ZEILE$)
;ZEILE 8
      ZEILE$=""+Chr(10)
      AnzBytes=AnzBytes+Len(ZEILE$)
      PokeS(*zeiger,ZEILE$,Len(ZEILE$)) 
      *zeiger=*zeiger+Len(ZEILE$)
      EndIf
      Next i

      Case "NEIN"
      
      For i=0 To CountGadgetItems(#LIGadget_3)-1
      ;ZEILE 1
      a$=ReplaceString(GetGadgetItemText(#LIGadget_3,i,1),Chr(216),"0",1,1);RUFZEICHEN
      b$=ReplaceString(GetGadgetItemText(#LIGadget_3,i,2),Chr(216),"0",1,1);DXCC
      ;DXCC-NR feststellen
      Restore ADIF
      Repeat
          Read begriff$
          If StringField(begriff$,1,"#")=b$:dxcc$=StringField(begriff$,2,"#"):Break:EndIf
      Until begriff$="ADIFENDE" 
      
      
      c$=LTrim(GetGadgetItemText(#LIGadget_3,i,5));FREQUENZ
      ;BAND HERAUSFILTERN
      If ValF(c$)>=1.800 And Val(c$)<=1.980:c2$="160M":EndIf
      If ValF(c$)>=3.500 And Val(c$)<=3.800:c2$="80M":EndIf
      If ValF(c$)>=7.000 And Val(c$)<=7.200:c2$="40M":EndIf
      If ValF(c$)>=10.100 And ValF(c$)<=10.150:c2$="30M":EndIf
      If ValF(c$)>=14.000 And ValF(c$)<=14.350:c2$="20M":EndIf
      If ValF(c$)>=18.068 And ValF(c$)<=18.168:c2$="17M":EndIf
      If ValF(c$)>=21.000 And ValF(c$)<=21.450:c2$="15M":EndIf
      If ValF(c$)>=24.890 And ValF(c$)<=24.990:c2$="12M":EndIf
      If ValF(c$)>=28.000 And ValF(c$)<=29.700:c2$="10M":EndIf
      If ValF(c$)>=50.000 And ValF(c$)<=52.000:c2$="6M":EndIf
      If ValF(c$)>=144.000 And ValF(c$)<=146.000:c2$="2M":EndIf
      If ValF(c$)>=430.000 And ValF(c$)<=440.000:c2$="70CM":EndIf
      If ValF(c$)>=1240.000 And ValF(c$)<=1300.000:c2$="23CM":EndIf
      If ValF(c$)>=2320.000 And ValF(c$)<=2450.000:c2$="13CM":EndIf
      If ValF(c$)>=5650.000 And ValF(c$)<=5850.000:c2$="6CM":EndIf
      If ValF(c$)>=10000.000 And ValF(c$)<=10500.000:c2$="3CM":EndIf
      ;BAND
      d$=GetGadgetItemText(#LIGadget_3,i,6);MODE
      ZEILE$="<CALL:"+Str(Len(a$))+">"+a$+"  <DXCC:"+Str(Len(dxcc$))+":N>"+dxcc$+"  <ENTITY:"+Str(Len(b$))+":C>"+b$+"  <FREQ:"+Str(Len(c$))+">"+c$+"  <BAND:"+Str(Len(c2$))+">"+c2$+"  <MODE:"+Str(Len(d$))+">"+d$+Chr(10)
      AnzBytes=AnzBytes+Len(ZEILE$)
      PokeS(*zeiger,ZEILE$,Len(ZEILE$)) 
      *zeiger=*zeiger+Len(ZEILE$)
;ZEILE 2
      e$=GetGadgetItemText(#LIGadget_3,i,3);DATUM
      f$=GetGadgetItemText(#LIGadget_3,i,4);UTC
      ZEILE$="     <QSO_DATE:8>"+StringField(e$,3,".")+StringField(e$,2,".")+StringField(e$,1,".")+"  <TIME_ON:4>"+StringField(f$,1,":")+StringField(f$,2,":")+"  <TIME_OFF:4>"+StringField(f$,1,":")+StringField(f$,2,":")+Chr(10)
      AnzBytes=AnzBytes+Len(ZEILE$)
      PokeS(*zeiger,ZEILE$,Len(ZEILE$)) 
      *zeiger=*zeiger+Len(ZEILE$)
;ZEILE 3
      g$=GetGadgetItemText(#LIGadget_3,i,7);RSTAB
      h$=GetGadgetItemText(#LIGadget_3,i,8);RSTAN
      ZEILE$="     <RST_SENT:"+Str(Len(g$))+">"+g$+"  <RST_RCVD:"+Str(Len(h$))+">"+h$+Chr(10)
      AnzBytes=AnzBytes+Len(ZEILE$)
      PokeS(*zeiger,ZEILE$,Len(ZEILE$)) 
      *zeiger=*zeiger+Len(ZEILE$)
;ZEILE 4
      i$=GetGadgetItemText(#LIGadget_3,i,9);NAME
      j$=GetGadgetItemText(#LIGadget_3,i,10);QTH
      k$=ReplaceString(GetGadgetItemText(#LIGadget_3,i,11),Chr(216),"0",1,1);DOK
      ZEILE$="     <NAME:"+Str(Len(i$))+">"+i$+"  <QTH:"+Str(Len(j$))+">"+j$+"  <DOK:"+Str(Len(k$))+":C>"+k$+Chr(10)
      AnzBytes=AnzBytes+Len(ZEILE$)
      PokeS(*zeiger,ZEILE$,Len(ZEILE$)) 
      *zeiger=*zeiger+Len(ZEILE$)
;ZEILE 5
      l$=Left(ReplaceString(GetGadgetItemText(#LIGadget_3,i,12),Chr(216),"0",1,1),2)+"-"+Right(ReplaceString(GetGadgetItemText(#LIGadget_3,i,12),Chr(216),"0",1,1),3);IOTA
      If Len(l$)<4:l$="":EndIf
      m$=ReplaceString(GetGadgetItemText(#LIGadget_3,i,13),Chr(216),"0",1,1);LOCATOR
      ZEILE$="     <IOTA:"+Str(Len(l$))+">"+l$+"  <GRIDSQUARE:"+Str(Len(m$))+">"+m$+Chr(10)
;ZEILE 6
      n$=ReplaceString(GetGadgetItemText(#LIGadget_3,i,14),Chr(216),"0",1,1);MANAGER
      o$=GetGadgetItemText(#LIGadget_3,i,15);QSL
      If o$="bestätigt":qs$="Y":qr$="Y"
            ElseIf o$="keine QSL":qs$="N":qr$="N"
            ElseIf o$="direkt":qs$="Y":qr$="R"
            ElseIf o$="Büro":qs$="Y":qr$="R"
      EndIf
      p$=GetGadgetItemText(#LIGadget_3,i,16);BEMERKUNGEN
      ZEILE$="<QSL_VIA:"+Str(Len(n$))+">"+n$+"  <QSL_SENT:1>"+qs$+"  <QSL_RCVD:1>"+qr$+"  <COMMENT:"+Str(Len(p$))+">"+p$+Chr(10)
      AnzBytes=AnzBytes+Len(ZEILE$)
      PokeS(*zeiger,ZEILE$,Len(ZEILE$)) 
      *zeiger=*zeiger+Len(ZEILE$)
;ZEILE 7
      ZEILE$="<EOR>"+Chr(10)
      AnzBytes=AnzBytes+Len(ZEILE$)
      PokeS(*zeiger,ZEILE$,Len(ZEILE$)) 
      *zeiger=*zeiger+Len(ZEILE$)
;ZEILE 8
      ZEILE$=""+Chr(10)
      AnzBytes=AnzBytes+Len(ZEILE$)
      PokeS(*zeiger,ZEILE$,Len(ZEILE$)) 
      *zeiger=*zeiger+Len(ZEILE$)
      
      Next i
      
      
      
EndSelect




CreateFile(21,FILE)
    WriteData(*beginn,AnzBytes)
CloseFile(21)
FreeMemory(20)
nrx=MessageRequester("LOGBUCH  [ EXPORT > ADIF ]","EXPORT FERTIG [ "+FILE+" ] ÖFFNEN ?",#PB_MessageRequester_YesNo)

If nrx = 6
    If RunProgram(FILE) = 0
          MessageRequester("LOGBUCH  [ EXPORT > ADIF ]","Die soeben exportierte ADIF-Datei konnte nicht geöffnet werden"+Chr(10)+"( Bitte überprüfen, ob ein Standard-Text-Editor existiert )")
          ProcedureReturn(i)
    Else
              RunProgram(FILE)
    EndIf
EndIf
EndProcedure
Hallo Ts-Soft, Deine Antwort werde ich mal probieren,danke

Re: RunProgram(File$)

Verfasst: 20.03.2010 22:00
von dl5ndh
Sorry, hatte vergessen zu schreiben, dass ich das noch mit 3.80 programmiert habe.

Re: RunProgram(File$)

Verfasst: 20.03.2010 22:03
von rolaf

Code: Alles auswählen

    If RunProgram(FILE) = 0
          MessageRequester("LOGBUCH  [ EXPORT > ADIF ]","Die soeben exportierte ADIF-Datei konnte nicht geöffnet werden"+Chr(10)+"( Bitte überprüfen, ob ein Standard-Text-Editor existiert )")
          ProcedureReturn(i)
    Else
              RunProgram(FILE)
    EndIf
Zweimal RunProgram(FILE), kein Wunder also. :wink:

Re: RunProgram(File$)

Verfasst: 20.03.2010 22:05
von ts-soft
DrFalo hat geschrieben:Zweimal RunProgram(FILE), kein Wunder also. :wink:
Ist die Sache mit der Logik :wink:

Wenn RunProgram() (erstes ausführen) nicht erfolgreich, dann
RunProgram() zweites ausführen

Re: RunProgram(File$)

Verfasst: 20.03.2010 22:09
von rolaf
ts-soft hat geschrieben:
DrFalo hat geschrieben:Zweimal RunProgram(FILE), kein Wunder also. :wink:
Ist die Sache mit der Logik :wink:

Wenn RunProgram() (erstes ausführen) nicht erfolgreich, dann
RunProgram() zweites ausführen
Ergo: "Else RunProgram(File)" in den Orkus :mrgreen: dann fluppts...

Re: RunProgram(File$)

Verfasst: 20.03.2010 22:14
von dl5ndh
Danke Euch beiden,
ich wollte den ersten Aufruf nur als Abfrage eintragen, also dabei wird
das auch schon ausgeführt, na so was dummes,hi.

Änder ich gleich
DANKE

Re: RunProgram(File$)

Verfasst: 20.03.2010 22:22
von dl5ndh
Ich hab's nun abgeändert.
Es geht nun wunderbar... nur einmal WordPad geöffnet! DANKE