![]() |
Datei öffnen und Werte ausgeben funktioniert nicht
Hi,
ich öffne eine Datei und will nur bestimmte Werte zur weiteren Verwendung nutzen. Die Datei öffne ich in ein Memofeld, was auch funktioniert. Wenn ich jetzt Werte verwenden möchte, werden diese nicht angezeigt in Editfeldern. Was mache ich verkehrt? Vielen Dank für eure Hilfe. Gruss Matthias
Delphi-Quellcode:
unit BarBow;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, ExtCtrls, Grids; type TForm9 = class(TForm) Memo1: TMemo; Image2: TImage; StaticText1: TStaticText; MainMenu1: TMainMenu; MainMenu2: TMenuItem; OPen1: TMenuItem; Exit1: TMenuItem; Help1: TMenuItem; OpenDialog1: TOpenDialog; Button1: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button2: TButton; Edit4: TEdit; procedure Exit1Click(Sender: TObject); procedure OPen1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form9: TForm9; filename : string; implementation {$R *.dfm} procedure TForm9.Exit1Click(Sender: TObject); begin close(); end; procedure TForm9.FormCreate(Sender: TObject); begin // Memo1.WordWrap := False; // Memo1.Lines.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Kurve.txt'); end; procedure TForm9.OPen1Click(Sender: TObject); // liest Datei in Memofeld ein var St,helpstring : string; F : TextFile; begin if OpenDialog1.Execute then begin filename:= OpenDialog1.FileName; AssignFile(F, OpenDialog1.FileName); // Datei auswählen Reset(F); while not eof (F) do begin Readln(F, helpstring); //Erste Zeile der Datei lesen St:=St + helpstring; Memo1.Text := St; //String in ein Memo schreiben end; CloseFile(F); end; end; procedure TForm9.Button1Click(Sender: TObject); begin close(); end; procedure TForm9.Button2Click(Sender: TObject); var s,s1,s2 : string; erstezeile,i,SuchZeile,p : integer; begin ErsteZeile := Memo1.Lines.Count; for i:=0 to Memo1.Lines.Count -1 do if SameText(Memo1.Lines[i],'data1:') then begin ErsteZeile:=i+1; Edit4.Text:=IntToStr(ErsteZeile); Break; end; SuchZeile:=StrToIntDef(Edit1.Text,1); Edit1.Text:=IntToStr(SuchZeile); //Korrigieren wenn Fehler SuchZeile:=ErsteZeile+SuchZeile; s:=Memo1.Lines[SuchZeile]; p:=Pos(#9,s); // #9 = Tab Delete(s,1,p); //löscht erstes Tab, d.h. bis vor erste Spalte p:=Pos(#9,s); // #9 = Tab Delete(s,1,p); //löscht bis ersten Tab, d.h. bis vor zweite Spalte p:=Pos(#9,s); // #9 = Tab Delete(s,1,p); //löscht bis zweiten Tab, d.h. bis vor dritte Spalte p:=Pos(#9,s); // #9 = Tab Delete(s,1,p); //löscht bis dritten Tab, d.h. bis vor dritte Spalte p:=Pos(#9,s); // #9 = Tab Delete(s,1,p); //löscht bis vierten Tab, d.h. bis vor dritte Spalte p:=Pos(#9,s); // #9 = Tab Delete(s,1,p); //löscht bis fuenften Tab, d.h. bis vor zweite Spalte p:=Pos(#9,s); // #9 = Tab Delete(s,1,p); //löscht bis sechsten Tab, d.h. bis vor dritte Spalte p:=Pos(#9,s); // #9 = Tab Delete(s,1,p); //löscht bis siebten Tab, d.h. bis vor dritte Spalte p:=Pos(#9,s); // #9 = Tab s1:=Copy(s,1,p); //kopiert bis achten Tab, d. h. zweite Spalte Delete(s,1,p); //löscht bis achten Tab, d.h. bis vor dritte Spalte p:=Pos(#9,s); // #9 = Tab s2:=Copy(s,1,p); //kopiert bis neunten Tab, d. h. zweite Spalte Delete(s,1,p); //löscht bis neunten Tab, d.h. bis vor dritte Spalte Edit2.Text:=Trim(s1); Edit3.Text:=Trim(s2); end; end. |
AW: Datei öffnen und Werte ausgeben funktioniert nicht
Liste der Anhänge anzeigen (Anzahl: 1)
Hier die Datei die geöffnet wird.
|
AW: Datei öffnen und Werte ausgeben funktioniert nicht
Bist Du Dir sicher, dass das Tabulatoren sind?
|
AW: Datei öffnen und Werte ausgeben funktioniert nicht
Den Debugger kennst du?
Haltepunkt an den Anfang von Button2Click und dann nachsehn, was das Programm macht, bzw. was es nicht so macht, wie du es dir denkst das es machen sollte. [add] Abgesehn vom LoadFromFile, was shmia gleich nennt... Würde es nicht ausreichen dem Memo nur einmal den kompletten Text zu geben, bzw. nicht ständig alles bereits Geladenen immer wieder zu überschreiben?
Delphi-Quellcode:
oder
Reset(F);
while not eof (F) do begin Readln(F, helpstring); //eine Zeile der Datei lesen St:=St + helpstring; end; Memo1.Text := St; //String in ein Memo schreiben CloseFile(F);
Delphi-Quellcode:
Reset(F);
Memo1.Clear; while not eof (F) do begin Readln(F, helpstring); //eine Zeile der Datei lesen Memo1.Lines.Add(helpstring); //Zeile ans Memo anhängen end; CloseFile(F); Zitat:
Delphi-Quellcode:
stimmt auch irgendwie fast nie.
d.h. bis vor ... Spalte
|
AW: Datei öffnen und Werte ausgeben funktioniert nicht
Bitte schickt doch AssignFile, Reset, ReadLn, usw. in Rente!
Zum Laden einer Datei reicht ein 2-Zeiler:
Delphi-Quellcode:
procedure TForm9.OPen1Click(Sender: TObject); // liest Datei in Memofeld ein
begin if OpenDialog1.Execute then Memo1.Lines.LoadFromFile(OpenDialog1.FileName); end; |
AW: Datei öffnen und Werte ausgeben funktioniert nicht
Ach ja, bezüglich der ganzen Pos und Delete:
Kennt dein Delphi noch kein ![]() Wenn nicht, dann siehe ![]() Damit mehrmals nach dem nächsten #9 suchen, dann s1 rauskopoieren, nach dem nächsten #9 suchen und s2 rauskopieren, ohne dabei löschen zu müssen. Abgesehn davon, daß man sich den String auch über ![]() Aber mangels lauffähigem Testprogramm, wirst du den Fehler, beim Füllen der Edits, selber suchen müssen. (Debuggen und nachsehn was ist) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz