Das OFFIZIELLE PROFAN SUPPORT FORUM
Einsteigerfragen
PROFAN-Programmierung
Helfer & Tools
Anregungen & Vorschläge
PROFAN-NEWS
Die Regeln!
2 - PROFAN-Programmierung

 Neues Thema  |  Zur Übersicht  |  Suchen  |  Einloggen   Vorherige Nachricht  |  Nächste Nachricht 
 Re: vergleichen
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)


 Beitrag beantworten  |  Foren-Liste  |  Alle Antworten   Neuerer Beitrag  |  Älteres Thema 

 Beiträge Autor  Datum
 vergleichen  Neu
Steven Scheidler 28.10.18 17:16 
 Re: vergleichen  Neu
Heinz Brill 29.10.18 17:39 
 Re: vergleichen  Neu
Steven Scheidler 06.11.18 17:15 
 Re: vergleichen  Neu
Michael Wodrich 31.10.18 04:22 
 Re: vergleichen  Neu
Steven Scheidler 06.11.18 17:31 


 Foren-Liste  |  Zur Registrierung 
 Benutzerlogin
 Benutzername:
 Passwort:
 Login-Daten speichern:
   
 Passwort vergessen?
E-Mail-Adresse oder Username unten eingeben. Dann wird Dir per e-Mail ein neues Passwort zugeschickt.

phorum.org