Entwickler-Ecke
Dateizugriff - Letzte Spalte wird beim Einlesen nicht übernommen
stefan1707 - Mo 12.03.07 11:53
Titel: Letzte Spalte wird beim Einlesen nicht übernommen
Hallo,
nachdem ich gelernt habe wie man aus einem File Zahlen in einem Array einlist habe ich ein weiteres Problem festgestellt.
Also folgendes.
Ich habe ein File das So aussieht
Quelltext
1: 2: 3: 4: 5:
| -18.00 25.0 0.0 0.0 -0.59 0.00795587 -7.0585e-006 0.00398763 -0.00021446 1.2260 1.0349 -18.00 25.0 0.0 100.0 36.93 0.00793906 -0.0018104 0.00408818 -0.0028133 1.2747 1.0309 -18.00 25.0 0.0 200.0 75.17 0.00795887 -0.0033442 0.00437066 -0.0049484 1.3800 1.1252 -18.00 25.0 0.0 300.0 113.70 0.00795258 -0.0047314 0.00460283 -0.006852 1.4970 1.2453 -18.00 25.0 0.0 400.0 150.61 0.00774206 -0.0058583 0.00465553 -0.008496 1.6198 1.4132 |
Die Spaltenanzahl ist immer 11. Und die einzelnen Spalten sind mit Taps getrennt.
Diese Zahlen möchte ich in einem zweidim. Array einlesen.
Ich lese alle Zahlen ein bis immer auf die Zahl in der letzten Spalte.
An dieser Stelle wird immer ein Leerzeichen abgespeichert.
Hier mein Source
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| setlength(FEM_Kennlinien,sl.Count); For i:= 0 to sl.Count-1 do begin
s:= sl[i]; setlength(FEM_Kennlinien[i],11); for t := 0 to 10 do
begin FEM_Kennlinien[i,t]:=((copy(s,1,pos(#9,s)-1))); delete(s,1,pos(#9,s)); end; end; |
Hoffe jemand kann mir helfen.
jasocul - Mo 12.03.07 12:12
Nach der letzten Spalte kommt kein "Tabe" (#9) mehr. Dadurch liefert Dir die Pos-Funktion den Wert 0 zurück.
stefan1707 - Mo 12.03.07 12:55
ok...
Also da ja kein Tab mehr nach der letzten ´Spalte vorhanden ist kann ich den Parameter nicht mit meiner pos-routine einlesen.
Also würde ich die letzte Spalte seperat einlesen. etwa so,
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| For i:= 0 to sl.Count-1 do begin
s:= sl[i]; setlength(FEM_Kennlinien[i],11); for t := 0 to 9 do begin
FEM_Kennlinien[i,t]:=((copy(s,1,pos(#9,s)-1))); delete(s,1,pos(#9,s)); end; FEM_Kennlinien[i,10]:=((copy(s,1,pos('',s)-1))); end; |
Leider klappt es so nicht, hoffe mein gedankengang ist richtig und nur die Syntaxs ist falsch.
Hoffe jemand weis einen Rat.
// Edit
Hab darüber nachgedacht, die letzte Spalte kann ich direkt einlesen, da in s ja nur noch die letzte Spalte drinsteht.
Calculon - Mo 12.03.07 13:50
Naja, da du von
s immer den kopierten Teil löscht, müsste doch das funktionieren:
Delphi-Quelltext
1:
| FEM_Kennlinien[i,10] := s; |
Gruß
Calculon
--
raiguen - Mo 12.03.07 15:58
Und wie wär's mit
DelimetedText?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure WerteAuslesen; var TempList: TStrings; i, t : Integer; begin TempList := TStringList.Create; TempList.Delimiter := #9; SetLength(FEM_Kennlinien,sl.Count); for i:= 0 to Pred(sl.Count) do begin TempList.DelimitedText := sl[i]; SetLength(FEM_Kennlinien[i],11); for t := 0 to Pred(TempList.Count) do FEM_Kennlinien[i,t]:= TempList[t]; end; TempList.Free; end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!