Autor Beitrag
stefan1707
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 19



BeitragVerfasst: Mo 12.03.07 11:53 
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
ausblenden 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
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 19



BeitragVerfasst: 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,
ausblenden 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  // Nur noch zehn Spalten werden eingelesen

  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))); // die elfte wird seperat eingelsen 
  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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: Mo 12.03.07 13:50 
Naja, da du von s immer den kopierten Teil löscht, müsste doch das funktionieren:

ausblenden Delphi-Quelltext
1:
FEM_Kennlinien[i,10] := s;					


Gruß

Calculon
--
raiguen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 374

WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
BeitragVerfasst: Mo 12.03.07 15:58 
Und wie wär's mit DelimetedText?
ausblenden 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;          //--temporäre Stringlist zur Aufnahme der 'separierten' Zahlenreihe
  TempList.Delimiter := #9;                //--Trennzeichen der einzulesenden Zahlenreihe

  SetLength(FEM_Kennlinien,sl.Count);
  for i:= 0 to Pred(sl.Count) do begin
    TempList.DelimitedText := sl[i];       //--Zahlenreihe einzeln in temporäre Liste eintragen
    SetLength(FEM_Kennlinien[i],11);
    for t := 0 to Pred(TempList.Count) do  //--separierte Einzelwerte aus der temporären Liste zuweisen 
      FEM_Kennlinien[i,t]:= TempList[t];
  end;
//..
  TempList.Free;                           //--temporäre Liste wieder freigeben
end;