Site Announcements

Liebe Gäste des Forums, wir freuen uns, dass ihr zu uns gelangt seid.
Windev ist eine sehr umfangreiche und starke Entwicklerumgebung für Anwendungen unter Windows, Linux und Internetapplikationen inkl. Mobile.
Hier sind Antworten und Anregungen dazu zu finden!
Möchtest du aktiv mitschreiben? Dann melde dich durch Klick auf den Text "Registrieren" hier rechts oberhalb an.

CSVToArray  Thema ist gelöst

Alle Themen rund um die Erstellung von Programmen

CSVToArray

Beitragvon FDominicus » 27. November 2017, 10:55

Sieht so aus, als ob ich mal wieder etwas überhaupt nicht verstehe:
Gegeben ist folgende Text Datei:
1;2;3
4;5;6

Und hier der Code
Code: Alles auswählen
TestProc()
   fileToReadFrom is string
   aLine is string
   arrTest is array of string
   fileToReadFrom = fExeDir() + "\..\test.txt"
   
   fileID is int
   fileID = fOpen(fileToReadFrom)
   aLine = fReadLine(fileID)
   CSVToArray(aLine, arrTest)
   Trace(arrTest[1])
   



Das einlesen klappt und nach dem Einlesen habe ich in aLine
"1;2;3" stehen und nach
CSVToArray
arrTest[1] = "1;2;3"

warum nicht
arrTest[1] = 1
arrTest[2] = 2
...

Benutze ich SplitString bekomme ich das Ergebnis, was ich erwarte.

Lese ich die ganze Datei so ein
Code: Alles auswählen
PROCEDURE TestProc2()
fileToReadFrom is string
sContent is string
arrTest is array 2 by 3 string
fileToReadFrom = fExeDir() + "\..\test.txt"

sContent = fLoadText(fileToReadFrom)
CSVToArray(sContent, arrTest)
Trace(arrTest[1,1])



Bekomme ich auch die erwarteten Zeilen mit 3 Elementen......
FDominicus
Junior Member
 
Beiträge: 21
Registriert: 9. Mai 2015, 08:19
Has thanked: 0 time
Have thanks: 0 time

Re: CSVToArray

Beitragvon Herbert » 27. November 2017, 12:29

Setze zur Sicherheit das ; als Separator ein, weil

Separator used to separate the values of the different columns. By default, the column separator used corresponds to "list separator" found in the regional settings of Windows.

also
Code: Alles auswählen
 CSVToArray(aLine, arrTest,";")
Herbert
Site Admin
 
Beiträge: 354
Registriert: 23. Februar 2010, 08:06
Wohnort: Langenthal, Schweiz
Has thanked: 5 times
Have thanks: 3 times

Re: CSVToArray

Beitragvon FDominicus » 27. November 2017, 14:19

Gemacht
Code: Alles auswählen
PROCEDURE TestProc()
   fileToReadFrom is string
   aLine is string
   arrTest is array of 5 string
   fileToReadFrom = fExeDir() + "\..\test.txt"
   
   fileID is int
   fileID = fOpen(fileToReadFrom)
   aLine = fReadLine(fileID)
   CSVToArray(aLine, arrTest, ";")
   Trace(arrTest[1])
   
      


Content von arrTest
Code: Alles auswählen
arrTest   
[1]   1;2;3

FDominicus
Junior Member
 
Beiträge: 21
Registriert: 9. Mai 2015, 08:19
Has thanked: 0 time
Have thanks: 0 time

Re: CSVToArray  Thema ist gelöst

Beitragvon Herbert » 28. November 2017, 21:46

Also, dieser Befehl ist für uns nicht ganz logisch, aber wenn man die Erklärung liest, klar:

For a one-dimensional array, the string will be cut according to the CR characters (Carriage Return).
For a two-dimensional array, the string will be cut according to the CR characters (Carriage Return), then according to the separator of columns. The elements will be added row by row.


hier: http://doc.windev.com/?1000017097&lang=en-US&productversion=01A210067f

Also das Trennzeichen muss bei 1dim-Array ein CR sein.
Code: Alles auswählen
aLine is string
arrTest is array of 2 strings
aLine="1;2;3"
aLine=Replace(aLine,";",CR)
CSVToArray(aLine, arrTest)
Trace(arrTest[1])
Herbert
Site Admin
 
Beiträge: 354
Registriert: 23. Februar 2010, 08:06
Wohnort: Langenthal, Schweiz
Has thanked: 5 times
Have thanks: 3 times

Re: CSVToArray

Beitragvon FDominicus » 30. November 2017, 14:42

Gelesen habe ich die Beschreibung aber offenkundig nicht vestanden. Ich dachte mit dem Separator wird es "glatt" gestellt.
Danke bin ich nicht selber drauf gekommen
FDominicus
Junior Member
 
Beiträge: 21
Registriert: 9. Mai 2015, 08:19
Has thanked: 0 time
Have thanks: 0 time


Zurück zu Programmierung allgemein

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron