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