Ja bitte - und am besten auch gleich das Gegenstück zum AuslesenKiffi hat geschrieben:> Sollen wir Dir einen kleinen Beispielsource posten, der eine CSV-Datei
einliest?
Grüße ... Kiffi
Angebotsprogramm
ja, ja bitte!!!!
- freedimension
- Admin
- Beiträge: 1987
- Registriert: 08.09.2004 13:19
- Wohnort: Ludwigsburg
- Kontaktdaten:
@freedimension
Ausserdem habe ich ihn schon zu meinem Lieblingsfeind erklärt.
Peter+Peter streiten sich gern

Kiffi und ich Diskutieren halt gerneKiffi hat geschrieben:ach! Wir streiten doch nicht. Wir diskutieren!freedimension hat geschrieben:*streitbarriere_erricht*
![]()

Peter+Peter streiten sich gern
Eben deshalb sollte man erst garnicht mit CSV anfangen......grummel, grummel, grummelMauli hat geschrieben: ich habe mich mit SQL lange beschäftig und sehe wirklich ein, daß es eine großartige Sache ist, aber ich war schlichtweg zu Faul, das Programm (6000) Zeilen auf MySQL3 umzuschreiben.
Kann ich niemanden raten! (bei Professionellen Programmen)Mauli hat geschrieben:Finde es auch so sehr gut und kann es jedem nur Raten, erstmal damit zu arbeiten, bevor man sich ans SQL wagt. Ich bin sehr zufriefen und sehe keinen Grund zu wechseln.
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Das Programm heißt nun KS-Auftrag, und KS-Cash wobei das "K" im Logo gespiegelt ist. Der Screenshot ist von der alten Version - werde heute abend mal die Aktuellen Screenshots servieren. Sieht noch besser aus !
Ne Vorlage hatte ich nicht dafür, einfach drauflos und fertig. Nach meinen Bedürfnissen ohne viel geklicke schnell zum Ergebnis und vorallem alles auf einem Blick, ohne suchen. Tja, da ist das Ergebnis ... habe es bisher (leider) nur 4x verkauft aber ich arbeite dran .
Ne Vorlage hatte ich nicht dafür, einfach drauflos und fertig. Nach meinen Bedürfnissen ohne viel geklicke schnell zum Ergebnis und vorallem alles auf einem Blick, ohne suchen. Tja, da ist das Ergebnis ... habe es bisher (leider) nur 4x verkauft aber ich arbeite dran .
@Mauli : bin mal gespannt - sieht aber sehr vielversprechend aus. Endlich mal was anderes als Spiele und DEMOs. Ne vernünftige Anwendung die auch wirklich genutzt wird und nen Sinn hat. So soll es sein.
Mein CNC-Commander zum Fräsen habe ich nun schon 23 mal verkauft und gutes Geld verdient. Eine größere Firma will mir sofort 50-70 Stück abkaufen, wenn deren Fräsen auch damit laufen - muß es extra anpassen und deren Logo mit einbinden. Dann winkt erstrecht Kohle !
Naja, weiter so ! Solche kompletten Anwendungen die wirklich funktionieren und eingesetzt werden lobe ich mir - egal ob SQL oder CSV. Jedem das was er am besten kann, bzw, was am schnellsten ist !
Mein CNC-Commander zum Fräsen habe ich nun schon 23 mal verkauft und gutes Geld verdient. Eine größere Firma will mir sofort 50-70 Stück abkaufen, wenn deren Fräsen auch damit laufen - muß es extra anpassen und deren Logo mit einbinden. Dann winkt erstrecht Kohle !
Naja, weiter so ! Solche kompletten Anwendungen die wirklich funktionieren und eingesetzt werden lobe ich mir - egal ob SQL oder CSV. Jedem das was er am besten kann, bzw, was am schnellsten ist !
PB 6.10LTs / Windows 11 64Bit 25H2
... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
So, hier nu die aktuellsten Screenshots :


Da ich mich nun selbstständg machen werde, benötigte ich ein Programm, dessen Einarbeitung ich sparen wollte, also selbstgeschrieben und fertich ! Inkl. autom. Mahnwesen, RMA-Abwicklung (mit den dazugehörenden Formularen und Vordrucken) und allem was man benötigt (Rechnung, Liferschein oder Barverkauf (KS-Cash) )


Da ich mich nun selbstständg machen werde, benötigte ich ein Programm, dessen Einarbeitung ich sparen wollte, also selbstgeschrieben und fertich ! Inkl. autom. Mahnwesen, RMA-Abwicklung (mit den dazugehörenden Formularen und Vordrucken) und allem was man benötigt (Rechnung, Liferschein oder Barverkauf (KS-Cash) )
Re: ja, ja bitte!!!!
äh, wenn Du mir jetzt noch den Unterschied zwischen Einlesen und Auslesen erklärst...hiltwin hat geschrieben:- und am besten auch gleich das Gegenstück zum AuslesenKiffi hat geschrieben:> Sollen wir Dir einen kleinen Beispielsource posten, der eine CSV-Datei einliest?
OK. Hier kommt der Code:hiltwin hat geschrieben:Ja bitte
Code: Alles auswählen
Global CsvLines.l, CsvFields.l
Procedure ReadCSV(sFile.s)
DefType.s sSeparator, sLine
DefType.l FF, lLineCounter, lFieldCounter, lMaxFieldCounter
sSeparator = ";"
CsvLines = -1
CsvFields = -1
FF = ReadFile(#PB_Any, sFile)
If FF
; Pass 1
; Determine count of lines and fields
While Eof(FF)=#False
sLine = ReadString()
If Trim(sLine) <> "" ; Line contains data?
lLineCounter + 1
lFieldCounter = CountString(sLine, sSeparator) + 1
If lMaxFieldCounter < lFieldCounter
lMaxFieldCounter = lFieldCounter
EndIf
EndIf
Wend
Debug "Found " + Str(lLineCounter) + " lines"
Debug "Found " + Str(lMaxFieldCounter) + " fields"
; Dimension Array with determined informations
CsvLines = lLineCounter - 1
CsvFields = lMaxFieldCounter - 1
Dim FieldArray.s(CsvLines, CsvFields)
; Pass 2
; Read Data
FileSeek(0) ; Jump to the start of the file
lLineCounter = 0
While Eof(FF)=#False
sLine = ReadString()
If Trim(sLine) <> "" ; Line contains data?
For lFieldCounter = 1 To CountString(sLine, sSeparator) + 1
FieldArray(lLineCounter, lFieldCounter-1) = StringField(sLine, lFieldCounter, sSeparator)
Next lFieldCounter
lLineCounter + 1
EndIf
Wend
CloseFile(FF)
Else
; Couldn't open file
EndIf
EndProcedure
Enumeration
#frmMain ; MainWindow
#ligView ; ListIconGadget
EndEnumeration
DefType.s sLine
DefType.l lField, lLine
ReadCSV("test.csv")
If CsvFields > -1 And CsvLines > -1
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
For lField = 1 To CsvFields
AddGadgetColumn(#ligView, lField, "Field" + Str(lField), 40)
Next lField
; Fill data into ListIconGadget
For lLine = 0 To CsvLines
sLine = ""
For lField = 0 To CsvFields
sLine + FieldArray(lLine, lField)
If lField <> CsvFields
sLine + Chr(10)
EndIf
Next lField
AddGadgetItem(#ligView, lLine, sLine)
Next lLine
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
EndIf
EndIfCode: 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
1.) Es gibt verschiedene Arten und Weisen, CSV-Dateien einzulesen. Ich
habe mich für obige Variante entschieden, weil sie flexibel ist. Man muss
zuvor nicht wissen, wieviele Felder eine Zeile enthält. Das wird im ersten
Arbeitsschritt (Pass 1) ermittelt. Dadurch ist die Routine allerdings
langsamer, weil die Datei zweimal durchlaufen werden muss. Bei den
knapp 500 Artikeln, die Earl Grey anvisiert, dürfte dass allerdings kaum
in's Gewicht fallen.
Eine weitere Möglichkeit der Geschwindigkeitsoptimierung kann man
nutzen, wenn man die FastFile-Routinen von Rings aus dem PBOSL-Paket
anstelle der Standard-Dateibefehle von PureBasic verwendet
2.) Es kann sein, dass in einem Feld (beispielsweise der
Artikelbezeichnung oder -beschreibung) der Feldseparator (hier: das
Semikolon) als Satzzeichen verwendet wird. Damit dieses nicht als
Feldseparator angesehen wird, fasst man das Feld üblicherweise in
Textbegrenzer ein.
Beispiel:
Code: Alles auswählen
Artikelnummer0815;"Artikelbezeichnung;BlaBla";ArtikelpreisSatzzeichen der Artikelbezeichnung zugehörig ist. Dafür sorgen die
Hochkommata am Anfang und Ende des Feldes.
Mein Code berücksichtigt das nicht!
Ich bin im Moment zu faul, um das noch einzubauen.
Grüße ... Kiffi
- freedimension
- Admin
- Beiträge: 1987
- Registriert: 08.09.2004 13:19
- Wohnort: Ludwigsburg
- Kontaktdaten:
Re: ja, ja bitte!!!!
Noch eine kurze Anmerkung hierzu: Es kann natürlich auch vorkommen, dass in Feldern auch mal Hochkommata enthalten sind. Diese werden dann normalerweise verdoppelt dargestellt. Wenn das BlaBla aus obigem Beispiel also in Hochkommata stehen sollte müsste das so aussehen:Kiffi hat geschrieben:2.) Es kann sein, dass in einem Feld (beispielsweise der
Artikelbezeichnung oder -beschreibung) der Feldseparator (hier: das
Semikolon) als Satzzeichen verwendet wird. Damit dieses nicht als
Feldseparator angesehen wird, fasst man das Feld üblicherweise in
Textbegrenzer ein.
Beispiel:
Man sieht: Obige Zeile hat 3 (!) Felder, weil das Semikolon alsCode: Alles auswählen
Artikelnummer0815;"Artikelbezeichnung;BlaBla";Artikelpreis
Satzzeichen der Artikelbezeichnung zugehörig ist. Dafür sorgen die
Hochkommata am Anfang und Ende des Feldes.
Code: Alles auswählen
Artikelnummer0815;"Artikelbezeichnung;""BlaBla""";Artikelpreis