Autor Beitrag
toxicmaster
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 94



BeitragVerfasst: So 19.12.04 18:40 
hi,
habe ein programm womit ich gerechnete werte in eine txt datei mit datum speichere.
aus dieser datei will ich nun die werte rauslesen lassen und direkt in einer tabelle anzeigen lassen.
habe aber null ahnung wie ich das jetzt angehen soll. wäre nett wenn mir einer nen paar codes als hilfestellung geben würde, da ich ein delphi neuling bin
Basti
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 345

Windows Vista
D2005 Pers, D7 Pers
BeitragVerfasst: So 19.12.04 18:49 
Also gut.
Wenn ich voraussetze, dass du das, was du schon has tselber gemacht hast,
hast du schon einiges Wissen, worauf ich zurückgreifen kann.
Zur Erinnerung: Mit Reset öffnest du eine Datei, mit ReadLn liest du eine Zeile ein (näheres in der Delphi Hilfe).
Du müsstest dir jetzt eine Struktur für die Datei ausdenken.
Ich habe 2 Vorschläge, wenn du Datum und Ergebnis speichern willst:
1. Vraiante für Dateistruktur
Datum
Ergebnis
Datum
Ergebnis
2. Vraiante für Dateistruktur
Datum TRENNZEICHEN Ergebnis
Datum TRENNZEICHEN Ergebnis
So, jetzt musst du dich entscheiden. 1. ist einfacher, weil du die gelesene Zeile nicht noch Spalten musst.
Also nimmst du dir eine Schleife, die so lange durhläuft, bis das Ende der Datei
erreicht ist. Schau dazu mal in der Delphi Hilfe unter EOF (End of File).
In der Schleife liest du dann jeweils 2 zeilen mit ReadLn ein.
Die 1. Zeile (Datum) schreibst du in die 1. Spalte der StringGrid,
die 2. Zeile in die 2. Spalte.
Damit du nicht immer die selbe Zeile der StringGrid überschreibst, musst du
pro Schleifendurchlauf eine Variable um 1 erhöhen.
Auf die StringGrid Zeillen greifst du so zu:
ausblenden Delphi-Quelltext
1:
StringGrid1.Cells[Spalte,Zeile] := 'Hallo';					

Das war's dann ausch schon.
Datei wieder schließen und gut ist.
Versuch mal damit klarzukommen, wenn nicht helfen wir dir gerne nochmal.
Füge dann aber bitte bei Fehlermeldungen gleich den Quelltext hier mit ein, okay? :D

_________________
Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.
toxicmaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 94



BeitragVerfasst: So 19.12.04 19:09 
hi,

also das ist mir alles nen wenig zu hoch :D
aber gut das prinzip versthe ich bloß ich dachte ich würde mit der stringgrid arbeiten und wenn man die macht, dann sind da schon 4 spalten nach rechts und nach unten. und ich habe 3 ergebnisse und ein datum daher würde sich das anbieten, dass ich die nach rechts eintragen würde.
aber gut ich habe null ahnung wie ich das jetzt mit dem read und den zeilen und dem ganzen zeugs angehen soll.
und ich denke ich werds auch nie hinbekommen (aber man kann es ja mal probieren)
ich glaub ich schau mal in die delphi hilfe (aber daraus werd ich eh nie schlau :D)
und wie gesagt wäre toll wenn du nen paar kleine code beispiele machen könntest
Basti
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 345

Windows Vista
D2005 Pers, D7 Pers
BeitragVerfasst: So 19.12.04 19:54 
toxicmaster hat folgendes geschrieben:
ich dachte ich würde mit der stringgrid arbeiten und wenn man die macht, dann sind da schon 4 spalten nach rechts und nach unten. und ich habe 3 ergebnisse und ein datum daher würde sich das anbieten, dass ich die nach rechts eintragen würde.

Ja, das stimmt soweit erstmal.
Schau dir im Objektinspektor die Eigenschafte nRowCount und Colcount an, damit kannst du Spaltenanzahl
und eilenanzahl einstellen.
Entnehme ich deinem Text, dass du 4 Daten speicherst? Dann brauchst du halt 4 Spalten und in die 1. kommt
meinetwegen das Datum und in die restlichen die anderen Egebnisse.
Dazu musst du die Struktur der Datei und der Schleife entsprechend ändern: 3 Zeilen lesen / schreiben.
toxicmaster hat folgendes geschrieben:
aber gut ich habe null ahnung wie ich das jetzt mit dem read und den zeilen und dem ganzen zeugs angehen soll.und ich denke ich werds auch nie hinbekommen (aber man kann es ja mal probieren)
ich glaub ich schau mal in die delphi hilfe (aber daraus werd ich eh nie schlau :D)

Versuchen musst du es schon mal ;)
toxicmaster hat folgendes geschrieben:
und wie gesagt wäre toll wenn du nen paar kleine code beispiele machen könntest

Das macht man hier sehr ungerne, aber gut.
In der Delphi Hilfe steht zu ReadLn und AssignFile folgendes:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var 
  F: TextFile;
  S: string;
begin
  if OpenDialog1.Execute then            { Öffnen-Dialogfeld anzeigen }
  begin
    AssignFile(F, OpenDialog1.FileName); { Datei in Dialogfeld ausgewählt }
    Reset(F);
    Readln(F, S);                        { Erste Zeile der Datei lesen }
    Edit1.Text := S;                     { String in Eingabefeld einfügen }
    CloseFile(F);
  end;
end;

Mit ein wenig Bemühung hättest du das auch selber rausbekommen und ich hätte dir das
gleiche gesagt. Wenn du das also nicht versteht, dann kann ich dir auch nicht helfen.
1. AssignFile => Einer Variable wird der Dateiname zugewiesen.
2. Reset => Diese Variable wird hier übergeben, die Datei wird geöffnet, der Dateicursor ist am Anfang
3. ReadLn => Aus der Datei wird ein String gelesen
4. CloseFile => Die Datei wird wieder geschlossen.
Du willst das noch erweitern:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
Öffne Datei
y = 1
Wiederhole
  Lies Datum (Zeile1)
  Lies Ergebnis1 (Zeile2)
  Lies Ergebnis2 (Zeile3)
  Lies Ergebnis3 (Zeile4)
  Füge Datum zu StringGrid Zelle 0,y hinzu
  Füge Ergebnis1 zu StringGrid Zelle 1,y hinzu
  Füge Ergebnis2 zu StringGrid Zelle 2,y hinzu
  Füge Ergebnis3 zu StringGrid Zelle 3,y hinzu
  Erhöhe y
  Erhöhe die Anzahl der StringGrid Zeilen um 1
bis Ende der Datei erreicht


Mehr Code bekommst du nun aber wirklich nicht, damit müsstest du es schaffen.
Ist ja bloß noch Übersetzungsarbeit.

_________________
Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.
toxicmaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 94



BeitragVerfasst: Di 21.12.04 17:37 
hi,
danke für die antwort.
also ich habe nen kleines problem habe aber verstanden was du im großen und ganzen meintest.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button3Click(Sender: TObject);
var
filename:string;
s:string;
begin
filename:=('Rechnung.txt');
if OpenDialog1.Execute then
  begin
    AssignFile(filename, OpenDialog1.FileName);
    Reset(filename);
    Readln(filename, S);
    memo1.Text := S;
    CloseFile(filename);
  end
end;


kannst du mir sagen was da falsch ist und was da wo hingehört?
also ich glaube da stimmt was nicht mit dem opendialog1.execute!
wozu brauche ich eigentlich die variable s:string; ?? was macht die??
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Di 21.12.04 17:43 
toxicmaster hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button3Click(Sender: TObject);
var
filename:string;
s:string;
begin
filename:=('Rechnung.txt');
if OpenDialog1.Execute then
  begin
    AssignFile(filename, OpenDialog1.FileName);
    Reset(filename);
    Readln(filename, S); //Hier liest du aus der Datei den Wert raus
    memo1.Text := S//Und hier weist du dem Memo den ausgelesenen Wert zu; S ist quasi nur eine Zwischenspeichervariable (Dummy)
    CloseFile(filename);
  end
end;


AXMD
toxicmaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 94



BeitragVerfasst: Di 21.12.04 17:57 
okay thx.

weißt du auch wo mein fehler liegt?
denn irgentwie kreidet er mir immer die opendialog1 als falsch an!!!!
HSchaffi
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 64



BeitragVerfasst: Di 21.12.04 18:55 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button3Click(Sender: TObject);
var
filename:string// falscher Typ ..... Textfile;
s:string;
begin
filename:=('Rechnung.txt');
if OpenDialog1.Execute then
  begin
    AssignFile(filename, OpenDialog1.FileName);
    Reset(filename);
    Readln(filename, S); //Hier liest du aus der Datei den Wert raus
    memo1.Text := S; //Und hier weist du dem Memo den ausgelesenen Wert zu; S ist quasi nur eine Zwischenspeichervariable (Dummy)
    CloseFile(filename);
  end
end;


Das ist nach meiner Ansicht der Fehler!!

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.

_________________
Gruss HSchaffi
Gegenseitige Achtung ist wie ein Lächeln - sie kostet nichts, und jeder freut sich darüber. ( Vagner Fernando Lobosco )
toxicmaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 94



BeitragVerfasst: Di 21.12.04 19:00 
nur so zur info ich habe jetzt nicht mehr vor die ergebnisse aus einer txt datei zu holen sondern eine notiz.
das ist für den anfang zum lernen ein wenig einfacher.
also ich habe ein memo ein button der das laden soll, (den code vom button habe ich schon gepostet) was in einer txt-datei (Rechnung.txt) steht (das ist eine notiz die ich dort per speichern aus meinem programm abgespeichert habe, was aber für mein problem jetzt keine auswirkung habe dürfte)

noch mal die kurzfassung:

memo wo text rein soll
+
button der den text für memo aus einer txt-datei holt(button code steht oben)

eigentlich müsst ihr mir nur den fehler an meiner oberen button konstruktion verraten.


thx ;D
HSchaffi
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 64



BeitragVerfasst: Di 21.12.04 19:02 
Du musst den Variablentyp ändern. Denn du möchtest ja eine Textdatei lesen. Also.... Textfile!!!!!!!!

_________________
Gruss HSchaffi
Gegenseitige Achtung ist wie ein Lächeln - sie kostet nichts, und jeder freut sich darüber. ( Vagner Fernando Lobosco )
toxicmaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 94



BeitragVerfasst: Di 21.12.04 19:08 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button3Click(Sender: TObject);
var
filename:textfile;
s:string;
begin
filename:=('Rechnung.txt');
if OpenDialog1.Execute then
  begin
    AssignFile(filename, OpenDialog1.FileName);
    Reset(filename);
    Readln(filename, S);
    memo1.Text := S;
    CloseFile(filename);
  end;
end;


danke habe ich nicht gewusst :D
aber es geht trotzdem nicht. #:'(
HSchaffi
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 64



BeitragVerfasst: Di 21.12.04 19:13 
Ich verstehe nicht, was du mit dem OpenDialog willst, wenn du den Namen schon vorher zuweist?

_________________
Gruss HSchaffi
Gegenseitige Achtung ist wie ein Lächeln - sie kostet nichts, und jeder freut sich darüber. ( Vagner Fernando Lobosco )
HSchaffi
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 64



BeitragVerfasst: Di 21.12.04 19:18 
Ich muss jetzt noch mal fragen, was du so richtig willst? Wenn ich richtig verstanden habe, willst du eine vorhandene Textdatei öffnen und den Inhalt in ein Memofeld wieder geben. Ist das korrekt?

_________________
Gruss HSchaffi
Gegenseitige Achtung ist wie ein Lächeln - sie kostet nichts, und jeder freut sich darüber. ( Vagner Fernando Lobosco )
toxicmaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 94



BeitragVerfasst: Di 21.12.04 19:23 
ja richtig.
HSchaffi
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 64



BeitragVerfasst: Di 21.12.04 19:40 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.Button3Click(Sender: TObject);
var
filename:textfile;
s:string;
begin

  if OpenDialog1.Execute then begin
     AssignFile(filename, OpenDialog1.FileName);
     try
        Reset(filename);
        Readln(filename, S);
        memo1.Text := S;
     finally
        CloseFile(filename);
     end;
  end;
end;


Versuche es mal damit!!!!

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.

_________________
Gruss HSchaffi
Gegenseitige Achtung ist wie ein Lächeln - sie kostet nichts, und jeder freut sich darüber. ( Vagner Fernando Lobosco )
toxicmaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 94



BeitragVerfasst: Di 21.12.04 19:48 
ne geht nicht

immer noch das opendialog1
!undefinierter bezeichner!
HSchaffi
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 64



BeitragVerfasst: Di 21.12.04 19:53 
Die Komponente hast du aber schon mit drinnne? Ansonsten weiß ich auch nicht weiter, sehe nicht das ganze Prog.

_________________
Gruss HSchaffi
Gegenseitige Achtung ist wie ein Lächeln - sie kostet nichts, und jeder freut sich darüber. ( Vagner Fernando Lobosco )
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Di 21.12.04 19:56 
:shock: Wenn du einen Opendialog auf die Form gezogen hast, dann versteh ich nicht, woran s liegen könnte! Wenn nicht: TOpenDialog ist eine Komponente der Registerkarte "Dialoge".
aber interessanterweise gehts damit auch:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);
var x:TOpenDialog;
begin
x:=TOpenDialog.Create(Button1);
x.Execute;
x.free;
end;

Damit erstelle ich mir einen Opendialog genannt x, mit dem Owner Button1 (OHA! :shock: keine ahnung, warum das einen owner braucht, und was ein owner ist! bau dir deinen dialog lieber auf die Form, statt ihn so zu erzeugen, da ich ka hab, was der owner sein soll. Vll änderst du iwas gravierendes... oO)

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
toxicmaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 94



BeitragVerfasst: Di 21.12.04 19:58 
könnte es daran liegen, dass die variable filename nicht festgelegt ist?
das müsste doch dahin
filename:=('Rechnung.txt');


ach ja und noch etwas ich habe es so gespeichert, dass die txt datei in dem ordner wo die exe datei ist gespeichert wird.
ausblenden Delphi-Quelltext
1:
ExtractFilePath(Application.ExeName)					

das könnte auch noch ein grund sein. aber erstmal muss das programm ja mal laufen.
es lässt sich ja nichtmal kompilieren.(dank dem opendialog1).
HSchaffi
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 64



BeitragVerfasst: Di 21.12.04 20:06 
Du kannst einer Textfile nicht einfachso den Namen zuweisen. Eine Textfile muss erzeugt werden.

ausblenden Delphi-Quelltext
1:
AssignFile(filename, Dateiname);  //Datei erstellen und Dateiname festlegen					


Ich denke es liegt eher an deinem OpenDialog!!!

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.

_________________
Gruss HSchaffi
Gegenseitige Achtung ist wie ein Lächeln - sie kostet nichts, und jeder freut sich darüber. ( Vagner Fernando Lobosco )