Daten aus einer Textdatei in ein Edit laden
-
Hallo Leute,
ich brauch mal ein wenig Hilfe.
Ich möchte DAten aus einer Textdatei in eine Edit Komponente laden. Die Textdatei sieht so aus:
1x1,5 0,31 0,26 0,11
2x2,5 0,22 0,33 0,44Über eine ComboBox wird eine Zeile ausgewählt, z.B. die mit 1x1,5 und die Werte dahinter, die 0,31 , 0,26 , 0,11 sollen dann in ein Edit1, Edit2 , Edit3 geladen werden.
Das Öffnen der Textdatei ist alles kein Problem, aber wie kann ich die Zeile1 bzw. diesen String in die Edit Komponenten laden.
mfg
ahl
-
Was benutzt du denn für das Edit? Welche GUI Lib? WinAPI? MFC? VCL? Oder gar eine Unabhängige lib?
BR
evilissimo
-
ich benutze Borland Builder 5.0, vcl.h
-
falsches forum:)
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum VCL/CLX (Borland C++ Builder) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Doppelpost...
-
void __fastcall TForm1::Button1Click(TObject *Sender) { TStringList *li=new TStringList(); li->LoadFromFile("text.txt"); li->Delimiter =' '; li->DelimitedText = li->Text; TEdit *edits[3]={Edit1,Edit2,Edit3}; int pos=0; while(pos<li->Count&&li->Strings[pos]!=ComboBox1->Text) pos+=4; if(pos<li->Count) { for(int i=0;i<3;i++) { edits[i]->Text = li->Strings[pos+1+i]; } } delete li; }
-
Mit dem delimerte bekomme ich folgende Fehlermeldung
[C++ Fehler] Unit1.cpp(160): E2316 'Delimiter' ist kein Element von 'TStringList'
[C++ Fehler] Unit1.cpp(161): E2316 'DelimitedText' ist kein Element von 'TStringList'
[C++ Fehler] Unit1.cpp(164): E2096 Ungültige Strukturoperation
-
Hallo
Dann vermute ich, das du den BCB5 hast, in dem sind diese Methoden noch nicht vorhanden.
Dann must du den Text selber auseinandertrenne, mit den AnsiString-Methoden Pos und SubStringbis bald
akari
-
Ja ist richtig borland 5.0.
-
akari schrieb:
Dann must du den Text selber auseinandertrenne, mit den AnsiString-Methoden Pos und SubString
Womit wir auf dem Stand des anderen Threads angekommen sind...
Grüße Joe_M.
-
Hast recht,
gebe zu, ich bin zu blöd dieses so zu machen.
Also fallst noch Jemand eine Tipp hätte, dann bitte Antworten
-
Probier mal das hier:
ListBox1->Clear(); int x = 0; int y = 0; String SubStr; while (x < Edit1->Text.Length()) { SubStr = Edit1->Text.SubString(x,1); if (SubStr == " ") { ListBox1->Items->Add(Edit1->Text.SubString(y,x - y)); x = x + 1; y = x; } x = x + 1; } ListBox1->Items->Add(Edit1->Text.SubString(y,x - y + 1));
-
String explode(String &source,char del,int pos) { int i=1,lp=1; while(i<=source.Length()&&pos) { if(source[i]==del) { pos--; if(pos) lp=i+1; } i++; } if(i>source.Length())i++; return source.SubString(lp,i-lp-1); } void __fastcall TForm1::Button1Click(TObject *Sender) { TStringList *li=new TStringList(); li->LoadFromFile("text.txt"); TEdit *edits[3]={Edit1,Edit2,Edit3}; int pos=0; while(pos<li->Count&&explode(li->Strings[pos],' ',1)!=ComboBox1->Text) pos++; if(pos<li->Count) { for(int i=0;i<3;i++) { edits[i]->Text = explode(li->Strings[pos],' ',i+2); } } delete li; }
-
Ich habe Probleme an dieser Stelle:
while(pos<li->Count&&explode(li->Strings[pos],' ',1)!=ComboBox1->Text) pos++;
undefinierte Funktion expolde
Ich benutze Borland C++Builder5.0, diesen Befehl gibt es nicht.
-
HAb es jetzt mal so gemacht, sehr sehr primitiv, aber funktioniert fast:
void __fastcall TForm1::ComboBox4Change(TObject *Sender)
{
if (ComboBox4->Text=="NYY 4x 1,5mm²"){Rw=14.47 ;XL=0.115 ;}
else if (ComboBox4->Text=="NYY 4x 2,5mm²"){Rw=8.71 ;XL=0.110 ;}
else if (ComboBox4->Text=="NNY 4x 4,0mm²"){Rw=5.45 ;XL=0.107 ;}
else if (ComboBox4->Text=="NYY 4x 6,0mm²"){Rw=3.62 ;XL=0.100 ;}
else if (ComboBox4->Text=="NYY 4x 10mm²") {Rw=2.16 ;XL=0.094 ;}
else if (ComboBox4->Text=="NYY 4x 16mm²") {Rw=1.36 ;XL=0.090 ;}
else if (ComboBox4->Text=="NYY 4x 25mm²") {Rw=0.836 ;XL=0.086 ;}
else if (ComboBox4->Text=="NYY 4x 35mm²") {Rw=0.627 ;XL=0.083 ;}
else if (ComboBox4->Text=="NAYY 4x 35mm²") {Rw=1.055 ;XL=0.083 ;}
else if (ComboBox4->Text=="NYY 4x 50mm²") {Rw=0.463 ;XL=0.083 ;}
else if (ComboBox4->Text=="NAYY 4x 50mm²") {Rw=0.772 ;XL=0.083 ;}
else if (ComboBox4->Text=="NYY 4x 70mm²") {Rw=0.321 ;XL=0.082 ;}
else if (ComboBox4->Text=="NAYY 4x 70mm²") {Rw=0.534 ;XL=0.082 ;}
else if (ComboBox4->Text=="NYY 4x 95mm²") {Rw=0.232 ;XL=0.082 ;}
else if (ComboBox4->Text=="NAYY 4x 95mm²") {Rw=0.386 ;XL=0.082 ;}
else if (ComboBox4->Text=="NYY 4x 120mm²"){Rw=0.184 ;XL=0.080 ;}
else if (ComboBox4->Text=="NAYY 4x 120mm²") {Rw=0.305 ;XL=0.080 ;}
else if (ComboBox4->Text=="NYY 4x 150mm²"){Rw=0.150 ;XL=0.080 ;}
else if (ComboBox4->Text=="NAYY 4x 150mm²") {Rw=0.249 ;XL=0.080 ;}
else if (ComboBox4->Text=="NYY 4x 185mm²"){Rw=0.1202 ;XL=0.080 ;}
else if (ComboBox4->Text=="NAYY 4x 185mm²") {Rw=0.198 ;XL=0.080 ;}
else if (ComboBox4->Text=="NYY 4x 240mm²"){Rw=0.0922 ;XL=0.079 ;}
else if (ComboBox4->Text=="NYY 4x 300mm²"){Rw=0.0745 ;XL=0.079 ;}
else if (ComboBox4->Text=="NYY 5x 1,5mm²"){Rw=14.47 ;XL=0.115 ;}
else if (ComboBox4->Text=="NYY 5x 2,5mm²"){Rw=8.71 ;XL=0.110 ;}
else if (ComboBox4->Text=="NYY 5x 4mm²") {Rw=5.45 ;XL=0.107 ;}
else if (ComboBox4->Text=="NYY 5x 6mm²") {Rw=3.62 ;XL=0.100 ;}
else if (ComboBox4->Text=="NYY 5x 10mm²") {Rw=2.16 ;XL=0.094 ;}
else if (ComboBox4->Text=="NYY 5x 16mm²") {Rw=1.36 ;XL=0.090 ;}//TStringList *list = new TStringList();
//AnsiString line;
//Memo2->Lines->LoadFromFile("H:\\Kabel.txt");
//line=Memo2->Lines->Strings[i];Edit18->Text=RW;
Edit19->Text=XL;//delete list;
}Das Problem ist nun, dass der angezeigte Werte in der Edit17,18 , nun teilweise falsch angezeigt werden, z.B. XL=0.110 angezeigt wird 0.10999;
Muß mal suchen, woran das noch liegt oder hat Jemand eine Idee
-
soviel zur effizienten programmierung
und was machste, wenn der user sich verschreibt??
-
ja ich weiss. Dann gib mir mal einen Tipp
-
ahl schrieb:
Ich habe Probleme an dieser Stelle:
while(pos<li->Count&&explode(li->Strings[pos],' ',1)!=ComboBox1->Text) pos++;
undefinierte Funktion expolde
Ich benutze Borland C++Builder5.0, diesen Befehl gibt es nicht.
Die Fehlermeldung sagt dir doch, das er die Funktion nicht kennt.
Hast du die Funktion explode vor dem Aufruf bekanntgemacht ?
-
btw. dies ist die Funktion:
String explode(String &source,char del,int pos) { int i=1,lp=1; while(i<=source.Length()&&pos) { if(source[i]==del) { pos--; if(pos) lp=i+1; } i++; } if(i>source.Length())i++; return source.SubString(lp,i-lp-1); }