Autor: Michael Wodrich (---.customer.vsm.sh)
Datum: 31.10.18 04:22
Nicht ganz so einfach, wenn man die Version nicht kennt.
Ich nutze "$", Verknüpfungsoperator seit X3.1, sonst nimmt man "+"
Damit hatte ich allerdings Probleme beim Zahlen verknüpfen.
CToD$() und DToC$() ergaben bei mir falsche Werte (vX4.0a-32)
Hab' schnell eigene gebaut, denn, mit der Jahreszahl vorne lassen sich die Daten einfach sortieren (LISTE,1 -- ist eine sortierte Liste)
/*
Mit CToD$() das Datum in eine sortierbare Form bringen
Rest dran lassen
in eine sortierte Listbox speichern
mit Substr in links und rechts aufspalten
solange links gleich , das rechte aufaddieren
*/
// die Originale ergaben bei mir Fehler
// das kann allerdings auch an der Verknüpfung mit "+" gelegen haben
Proc _CToD$
Parameters a$
Declare b$
b$ = Mid$(a$,7,4) $ Mid$(a$,4,2) $ Mid$(a$,1,2)
Return b$ // "TT.MM.JJJJ" -> "JJJJMMTT"
EndProc
Proc _DToC$
Parameters a$
Declare b$
b$ = Mid$(a$,7,2) $ "." $ Mid$(a$,5,2) $ "." $ Mid$(a$,1,4)
Return b$ // "JJJJMMTT" -> "TT.MM.JJJJ"
EndProc
Declare EingabeListe&, AusgabeListe&, Dateizeile$, vor$,s$,t$, Summe!, rest%
EingabeListe& = Create("List",1)
AusgabeListe& = Create("List",1)
Proc Test
Assign #1, "C:\\Temp\\Datei1.CSV"
Rewrite #1
Print #1, "04.10.2018;5"
Print #1, "05.10.2018;3"
Print #1, "05.10.2018;1.5"
Print #1, "06.10.2018;2"
Print #1, "06.10.2018;4"
Print #1, "06.10.2018;1"
Print #1, "07.10.2018;2"
Print #1, "07.10.2018;6"
Close #1
EndProc
Test
Assign #1, "C:\\Temp\\Datei1.CSV"
Reset #1
While Not(EOF(#1))
Input #1,Dateizeile$
// wenn es nur ein Semikolon in der Zeile gibt...
s$ = SubStr$(Dateizeile$, 1, ";")
t$ = SubStr$(Dateizeile$, 2, ";")
AddString(EingabeListe&, _CToD$(s$) $ ";" $ t$) // z.B.: 20181005;3
// sonst...
's$ = _CToD$(Left$(Dateizeile$,10)) + Mid$(Dateizeile$,11,Len(Dateizeile$))
'AddString(EingabeListe&, s$) // z.B.: 20181005;3
EndWhile
Close #1
Clear Summe!, vor$
// hier gehe ich auch von nur 2 Werten in der CSV-Zeile aus...
WhileLoop 0, GetCount(EingabeListe&) - 1
Dateizeile$ = GetString$(EingabeListe&, &Loop)
s$ = SubStr$(Dateizeile$, 1, ";")
t$ = SubStr$(Dateizeile$, 2, ";")
If &Loop = 0 // Sonderfall ohne Vorgänger
Summe! = Val( Trim$(t$) )
inc rest%
Else
If s$ = vor$
Summe! = Summe! + Val( t$ )
inc rest%
Else
AddString(AusgabeListe&, _DToC$(vor$) $ ";" $ Str$(Summe!))
Clear rest%, Summe!
Summe! = Summe! + Val( t$ )
inc rest%
EndIf
EndIf
vor$ = s$
EndWhile
Case rest% : AddString(AusgabeListe&, _DToC$(vor$) $ ";" $ Str$(Summe!))
Assign #1, "C:\\Temp\\Datei2.CSV"
Rewrite #1
WhileLoop 0, GetCount(AusgabeListe&) - 1
Print #1,GetString$(AusgabeListe&, &Loop)
EndWhile
Close #1
'ShellExec("C:\\Temp\\Datei2.CSV","open",1)
Shell "Notepad C:\\Temp\\Datei2.CSV"
waitinput
End
--
Programmieren, das spannendste Detektivspiel der Welt.
Programmierumgebung: | XProfan (neueste) | Win (neueste)
|
|