CSVToArray

Alle Themen rund um die Erstellung von Programmen
Antworten
FDominicus
Member
Beiträge: 65
Registriert: 9. Mai 2015, 08:19

CSVToArray

Beitrag von FDominicus »

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......

Herbert
Site Admin
Beiträge: 529
Registriert: 23. Februar 2010, 08:06
Wohnort: Langenthal, Schweiz
Kontaktdaten:

Re: CSVToArray

Beitrag von Herbert »

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,";")

FDominicus
Member
Beiträge: 65
Registriert: 9. Mai 2015, 08:19

Re: CSVToArray

Beitrag von FDominicus »

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


Herbert
Site Admin
Beiträge: 529
Registriert: 23. Februar 2010, 08:06
Wohnort: Langenthal, Schweiz
Kontaktdaten:

Re: CSVToArray

Beitrag von Herbert »

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= ... 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])

FDominicus
Member
Beiträge: 65
Registriert: 9. Mai 2015, 08:19

Re: CSVToArray

Beitrag von FDominicus »

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

Antworten