AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Datei öffnen und Werte ausgeben funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Datei öffnen und Werte ausgeben funktioniert nicht

Ein Thema von mat72 · begonnen am 24. Aug 2012 · letzter Beitrag vom 24. Aug 2012
Antwort Antwort
mat72

Registriert seit: 15. Mär 2012
35 Beiträge
 
#1

Datei öffnen und Werte ausgeben funktioniert nicht

  Alt 24. Aug 2012, 15:29
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.
  Mit Zitat antworten Zitat
mat72

Registriert seit: 15. Mär 2012
35 Beiträge
 
#2

AW: Datei öffnen und Werte ausgeben funktioniert nicht

  Alt 24. Aug 2012, 15:34
Hier die Datei die geöffnet wird.
Angehängte Dateien
Dateityp: txt Kurve.txt (6,1 KB, 11x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#3

AW: Datei öffnen und Werte ausgeben funktioniert nicht

  Alt 24. Aug 2012, 15:38
Bist Du Dir sicher, dass das Tabulatoren sind?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#4

AW: Datei öffnen und Werte ausgeben funktioniert nicht

  Alt 24. Aug 2012, 15:48
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:
    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);
oder
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:
Erste Zeile der Datei lesen
Das Erste ist bestimmt auch falsch und das d.h. bis vor ... Spalte stimmt auch irgendwie fast nie.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (24. Aug 2012 um 16:04 Uhr)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

AW: Datei öffnen und Werte ausgeben funktioniert nicht

  Alt 24. Aug 2012, 15:53
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;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#6

AW: Datei öffnen und Werte ausgeben funktioniert nicht

  Alt 24. Aug 2012, 16:34
Ach ja, bezüglich der ganzen Pos und Delete:
Kennt dein Delphi noch kein Delphi-Referenz durchsuchenPosEx?
Wenn nicht, dann siehe PosExPosEx.

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 ExplodeExplode-Funktionen, bzw. mit Hilfe einer TStringList, an den #9 aufplitten lassen könnte, wobei man mehrere Einzelstrings zurückbekommt und sich dann nur noch den gewünschten String rauszusuchen braucht.



Aber mangels lauffähigem Testprogramm, wirst du den Fehler, beim Füllen der Edits, selber suchen müssen. (Debuggen und nachsehn was ist)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz