ich muß aus einer Textdatei Datensätze auslesen, die über drei Zeilen gehen.
Hier ein Beispiel:
201WGW2 GERMAN BIGHT WESTERN APPROACH, KARTE 2
202WGW2 N540545 0E 61730 0N541250 0E 637 0 0 20000 1 9
203WGW2 2518000 05995000 0 2542000 06011000 00
Ich habe ein altes QuickBasic 4.5 Programm bekommen, mit dem es früher lief.
Hier ist es:
CLS
CLOSE
datenfile$ = "D:\Daten\ChartServer\TKS_Ausd.txt"
ergebnisfile$ = "D:\Daten\ChartServer\TKS_Ausd.lis"
OPEN datenfile$ FOR INPUT AS #1
OPEN ergebnis$ FOR OUTPUT AS #3
DO UNTIL INKEY$ "" OR EOF(1)
LINE INPUT #1, a$
N = N + 1
IF MID$(a$, 1, 3) = "201" THEN
Kartennummer$ = MID$(a$, 4, 6)
Kartenname$ = MID$(a$, 11, 69)
ELSEIF MID$(a$, 1, 3) = "202" THEN
Kartennummer$ = MID$(a$, 4, 6)
SWBreiteText$ = MID$(a$, 11, 1)
SWGradBreite$ = MID$(a$, 12, 2): SWMinBreite$ = MID$(a$, 14, 2): SWSekBreite$ = MID$(a$, 16, 2)
SWBreite$ = SWGradBreite$ + " " + SWMinBreite$ + " " + SWSekBreite$
SWLaengeText$ = MID$(a$, 20, 1)
SWGradLaenge$ = MID$(a$, 21, 3): SWMinLaenge$ = MID$(a$, 24, 2): SWSekLaenge$ = MID$(a$, 26, 2)
SWLaenge$ = SWGradLaenge$ + " " + SWMinLaenge$ + " " + SWSekLaenge$
NEBreite$ = MID$(a$, 11, 1)
NEGradBreite$ = MID$(a$, 12, 2): NEMinBreite$ = MID$(a$, 14, 2): NESekBreite$ = MID$(a$, 16, 2)
NEBreite$ = NEGradBreite$ + " " + NEMinBreite$ + " " + NESekBreite$
NELaenge$ = MID$(a$, 20, 1)
NEGradLaenge$ = MID$(a$, 21, 3): NEMinLaenge$ = MID$(a$, 24, 2): NESekLaenge$ = MID$(a$, 26, 2)
NELaenge$ = NEGradLaenge$ + " " + NEMinLaenge$ + " " + NESekLaenge$
Massstab$ = MID$(a$, 49, 9)
Erdellipsoid$ = MID$(a$, 58, 2)
Projektion$ = MID$(a$, 60, 2)
IF Projektion$ = " 4" THEN
KSgeod$ = "ED50"
KSeben$ = "DHDN"
ELSEIF Projektion$ = " 5" THEN
KSgeod$ = "ED50"
KSeben$ = "UTM"
ELSEIF Projektion$ = " 6" THEN
KSgeod$ = "WGS84"
KSeben$ = "S42/83"
ELSEIF Projektion$ = " 9" THEN
KSgeod$ = "WGS84"
KSeben$ = "DHDN"
ELSEIF Projektion$ = "18" THEN
KSgeod$ = "WGS84"
KSeben$ = "UTM"
ELSE
LOCATE 32, 1:
PRINT "Unbekannte Projektion !!!!!!"; Projektion$
SLEEP 1
END IF
Ellipsoidverschiebung$ = MID$(a$, 62, 18)
ELSEIF MID$(a$, 1, 3) = "203" THEN
Kartennummer$ = MID$(a$, 4, 6)
LUKennziffer$ = MID$(a$, 11, 2)
LUMRechts$ = MID$(a$, 13, 6): LUCRechts$ = MID$(a$, 19, 2)
LURechts$ = LUMRechts$ + "," + LUCRechts$: KLURechts$ = LUKennziffer$ + LURechts$
LUMHoch$ = MID$(a$, 21, 6): LUCHoch$ = MID$(a$, 28, 2)
LUHoch$ = LUMHoch$ + "," + LUCHoch$: KLUHoch$ = LUKennziffer$ + LUHoch$
ROKennziffer$ = MID$(a$, 30, 2)
ROMRechts$ = MID$(a$, 32, 6): ROCRechts$ = MID$(a$, 38, 2)
RORechts$ = ROMRechts$ + "," + ROCRechts$: KRORechts$ = ROKennziffer$ + RORechts$
ROMHoch$ = MID$(a$, 40, 6): ROCHoch$ = MID$(a$, 47, 2)
ROHoch$ = ROMHoch$ + "," + ROCHoch$: KROHoch$ = ROKennziffer$ + ROHoch$
ELSE
LOCATE 30, 1:
PRINT "Unbekannte Datenzeile !!!!!!"; a$
SLEEP 1
END IF
LOCATE 20, 1: PRINT Kartennummer$, Massstab$, KSgeod$, SWBreiteText$, SWBreite$, NEBreiteText$, NEBreite$, KSeben$, KLUHoch$, KLURechts$, KROHoch$, KRORechts$
PRINT #3 Kartennummer$, Massstab$, KSgeod$, SWBreiteText$, SWBreite$, NEBreiteText$, NEBreite$, KSeben$, KLUHoch$, KLURechts$, KROHoch$, KRORechts$
LOCATE 15, 1: PRINT "Es sind bereits" + STR$(N) + " Datensaetze gelesen "
LOOP
CLOSE
END
Nun möchte ich die Daten direkt in eine Arbeitsmappe schreiben.
Kann mir bitte jemand beim Umsetzen des QB4.5-Quellcodes in VisualBasic helfen?
Ich kriege das nicht hin!
Gruß
Rolf