Angebotsprogramm

Anfängerfragen zum Programmieren mit PureBasic.
hiltwin
Beiträge: 311
Registriert: 06.10.2005 11:08
Wohnort: D-31177 Harsum
Kontaktdaten:

Hallo Kiffi!

Beitrag von hiltwin »

Vielen Dank für die Mühe, vom Aufbau versteh ich es so halbwegs, allerdings bekomm ich kein Window auf den Bildschirm.
Ich habs aus Purebasic heraus versucht und aus ner exe - die test.csv liegt im gleichen Verzeichnis.
Das Programm flackert kurz auf und verschwindet dann und ward nicht mehr gesehen ...
Die CSV hatte ich mit Excel geschrieben und sieht genauso aus:

Code: Alles auswählen

00;01;02;03;04;05;06;07;08;09
10;11;12;13;14;15;16;17;18;19
20;21;22;23;24;25;26;27;28;29
30;31;32;33;34;35;36;37;38;39
40;41;42;43;44;45;46;47;48;49
50;51;52;53;54;55;56;57;58;59
60;61;62;63;64;65;66;67;68;69
70;71;72;73;74;75;76;77;78;79
80;81;82;83;84;85;86;87;88;89
90;91;92;93;94;95;96;97;98;99
*verzweifel*
-------------------------------------------------------------------------------------
Frau Edith kommt zum Einsatz ;o)

Funktioniert bestens! Man sollte dann auch die Datei in Excel schliessen ;o)
Scheint daran gelegen zu haben ...

Was ich mit "auslesen" meinte, war der umgekerte Weg, also aus dem Programm heraus genau die gleichen Daten herauszuschreiben, um zu lernen, wie die Befehle miteinander korrespondieren.

Auf jeden Fall noch mal herzlichen Dank für die Mühe und auch für die Anmerkungen bezüglich der ""Anführungszeichen"";
-------------------------------------------------------------------------------------
HALBES OFFTOPIC:

Das 3 x verkaufte Programm sieht wirklich ordentlich aus. Vielleicht wäre es ja mal eine Überlegung wert, untereinander für kommerzielle Produkte Werbung zu machen und bei erfolgreichem Verkauf auch ne kleine Provision zu zahlen.
Ich meine, PureBasic würde sicherlich noch mehr ernst genommen, wenn auf der purebasic.de in der Programmgalerie nicht nur von Krakout (als einziges mir kommerziell ersichtliches Programm) der Link stehen würde, sondern auch ein Shop für mit purebasic.de erstellte Anwendungen enthalten wäre.
Vermutlich haben doch einige hier eine eigene Webpräsenz mit ein mehr oder weniger Besuchern. Also, ich würd z.B. auf meiner Seite dafür die Werbung von Douglas oder betandwin rausschmeissen ;o)
Einen schönen Sonntag allen ...
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Hallo Kiffi!

Beitrag von Kiffi »

> Was ich mit "auslesen" meinte, war der umgekerte Weg, also aus dem
> Programm heraus genau die gleichen Daten herauszuschreiben, um zu
> lernen, wie die Befehle miteinander korrespondieren.

Achso! ;-)

Hier der Code zum Schreiben der Daten:

Code: Alles auswählen

Procedure WriteCSV(sFile.s)
  
  DefType.s sSeparator, sLine
  DefType.l FF, lLine, lField
  
  sSeparator = ";"

  FF = CreateFile(#PB_Any, sFile)
  
  If FF
    
    For lLine = 0 To CsvLines
      sLine = ""
      For lField = 0 To CsvFields
        sLine + FieldArray(lLine, lField)
        If lField <> CsvFields
          sLine + sSeparator
        EndIf
      Next lField
      WriteStringN(sLine)
    Next lLine
    
    CloseFile(FF)
    
  Else
    
    ; Couldn't create file
    
  EndIf
    
EndProcedure
Grüße ... Kiffi
hiltwin
Beiträge: 311
Registriert: 06.10.2005 11:08
Wohnort: D-31177 Harsum
Kontaktdaten:

Ganz herzlichen Dank!

Beitrag von hiltwin »

Komme langsam in die Materie rein.

Eine Frage noch zum Daten auslagern, in eine Datei reinschreiben.

Meine zu speichernden Daten setzen sich aus rund 40 Strings und rund 300 .l Zahlen zusammen.

Gibt es da eine Empfehlung, was man in welcher Reihenfolge in eine Datei reinschreibt, oder ist soetwas vollkommen egal?

Frdl. Gruss
Hiltwin
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Re: Ganz herzlichen Dank!

Beitrag von Andre »

hiltwin hat geschrieben:Vermutlich haben doch einige hier eine eigene Webpräsenz mit ein mehr oder weniger Besuchern. Also, ich würd z.B. auf meiner Seite dafür die Werbung von Douglas oder betandwin rausschmeissen ;o)
Ein Anfang für eine einheitliche Plattform - noch dazu kostenlos - ist ja schonmal der Showcase auf www.PureArea.net :wink:
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Earl Grey
Beiträge: 6
Registriert: 25.10.2004 08:48

Beitrag von Earl Grey »

hi leute,
leider is mein pc abgekackt und ich konnte ein paar tage nicht online gehen. :(

danke für eure zahlreichen bemühungen. da dieses programm ausschliesslich für meine eigene verwendung ist um mir das leben zu erleichtern (bis jetzt mußte ich das mit der hand immer durchrechnen) werde ich es mal mit cvs versuchen. werd mich dann wieder melden um kritik einzuholen....

cu
Lerne aus den Fehlern anderer.
Du hast nicht die Zeit alle Fehler selbst zu begehen.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Ganz herzlichen Dank!

Beitrag von Kiffi »

> Gibt es da eine Empfehlung, was man in welcher Reihenfolge in eine Datei
> reinschreibt, oder ist soetwas vollkommen egal?

eigentlich ist das ziemlich egal, in welcher Reihenfolge die Felder
hintereinander stehen. Achte aber darauf, ob die einzelnen Zeilen länger als
64000 Zeichen sind. In diesem Fall musst Du den internen Stringpuffer von
PB erweitern.

Der Vollständigkeit halber hier noch mal Lese- und Schreibroutine einer
CSV-Datei mit Nutzung einer LinkedList anstelle eines Arrays:

Code: Alles auswählen

NewList LL_CSV.s()

Procedure ReadCSV(sFile.s)
  
  DefType.s sLine
  DefType.l FF
  
  ClearList(LL_CSV())
  
  FF = ReadFile(#PB_Any, sFile)
  
  If FF
    
    While Eof(FF)=#False
      
      sLine = ReadString()
      
      If Trim(sLine) <> "" ; Line contains data?
        
        AddElement(LL_CSV())
        LL_CSV()=sLine
        
      EndIf
      
    Wend
    
    Debug "Found " + Str(CountList(LL_CSV())) + " lines"
    
    CloseFile(FF)
    
  Else
    
    ; Couldn't open file
    
  EndIf
  
EndProcedure

Procedure WriteCSV(sFile.s)
  
  DefType.l FF
  
  FF = CreateFile(#PB_Any, sFile)
  
  If FF
    
    ForEach LL_CSV()
      WriteStringN(LL_CSV())
    Next
      
    CloseFile(FF)
    
  Else
    
    ; Couldn't create file
    
  EndIf
  
EndProcedure

Procedure.l GetMaxFieldsCount()
  
  DefType.l lFieldCount, lMaxFieldCount
  
  ForEach LL_CSV()
    
    lFieldCount=CountString(LL_CSV(),";") + 1
    If lMaxFieldCount < lFieldCount
      lMaxFieldCount = lFieldCount
    EndIf
    
  Next
  
  ProcedureReturn lMaxFieldCount
  
EndProcedure

Enumeration
  #frmMain ; MainWindow
  #ligView ; ListIconGadget
EndEnumeration

DefType.s sLine
DefType.l lField, lLine

ReadCSV("test.csv")

If OpenWindow(#frmMain, 0,0,420,200, #PB_Window_ScreenCentered|#PB_Window_SystemMenu, "Read CSV - Sample")
  
  If CreateGadgetList(WindowID(#frmMain))
    
    ; Use a ListIconGadget to view the read data
    
    ListIconGadget(#ligView, 0, 0, 420, 200, "Field0", 40, #PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
    
    ; Fill Columnheaders of ListIconGadget
    
    FirstElement(LL_CSV())
    
    For lField = 1 To GetMaxFieldsCount() -1
      AddGadgetColumn(#ligView, lField, "Field" + Str(lField), 40)
    Next lField
    
    ; Fill data into ListIconGadget
    
    ForEach LL_CSV()
      AddGadgetItem(#ligView, -1, ReplaceString(LL_CSV(), ";", Chr(10)))
    Next 
    
    Repeat
      
    Until WaitWindowEvent() = #PB_Event_CloseWindow
    
  EndIf
  
EndIf
Grüße ... Kiffi
Antworten