Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Assignfile: Anfänger versteht das Konzept nicht. (https://www.delphipraxis.net/6614-assignfile-anfaenger-versteht-das-konzept-nicht.html)

MrFish 16. Jul 2003 21:01


Assignfile: Anfänger versteht das Konzept nicht.
 
Hallo an alle

Ich bin Anfänger in Delphi, und brauche eure Hilfe. :?:
Ich verstehe das Konzept von Assignfile nicht.
Assignfile(f,Filename)
Filename = Dateiname incl. Pfad (a:\TestFile.txt) ist klar. :)
f = stellt die verbindung zwische der Datei(TestFile.txt)dar. :roll:
aber die Verbindung von f zu meinen Daten verstehe ich nicht. :cry:

Konkret will ich ein zweidinesionales Array (Array[1..200,1..3] of String) auf Platte bannen und wieder lesen.

Luckie 16. Jul 2003 21:06

Re: Assignfile: Anfänger versteht das Konzept nicht.
 
Kuck dir doch noch mal AssignFile an, konkret den zwieten Parameter.

MrFish 16. Jul 2003 21:11

Re: Assignfile: Anfänger versteht das Konzept nicht.
 
Das ging schnell!
leider versteh ich nicht was du meinst.
sorry

sakura 16. Jul 2003 21:14

Re: Assignfile: Anfänger versteht das Konzept nicht.
 
Zitat:

Zitat von Luckie
Kuck dir doch noch mal AssignFile an, konkret den zwieten Parameter.

Was hat das mit der Frage zum Speichern des Arrays zu tun :?: :roll:

...:cat:...

Luckie 16. Jul 2003 21:17

Re: Assignfile: Anfänger versteht das Konzept nicht.
 
Zitat:

Zitat von sakura
Was hat das mit der Frage zum Speichern des Arrays zu tun :?: :roll:

Gar nichts. Aber hier mit:
Zitat:

aber die Verbindung von f zu meinen Daten verstehe ich nicht.

sakura 16. Jul 2003 21:19

Re: Assignfile: Anfänger versteht das Konzept nicht.
 
Also, ich würde es mit einer StringListe lösen. Die Arbeit mit AssignFile gehört eínfach zur Vergangenheit und gilt als nicht mehr empfehlenswert, um es milde auszudrücken.
Delphi-Quellcode:
var
  DeinArray: Array[1..200,1..3] of String;
  I, J: Integer;
begin
  ...
  // speichern
  with TStringList.Create do
  try
    for I := Low(DeinArray) to High(DeinArray) do
      for J := Low(DeinArray[I]) to High(DeinArray[I]) do
        Add(DeinArray[I, J]);
    SaveToFile('a:\TestFile.txt');
  finally
    Free;
  end;
  ...
...:cat:...

MrFish 16. Jul 2003 21:40

Re: Assignfile: Anfänger versteht das Konzept nicht.
 
Ich glaube das habe ich verstanden.
anders als mit Assignfile speicher ich die gesamte Gatei und nicht nur Fragmente.
Ich frage mich aber warum meine Literatur nur auf assignfile aufbaut.
Ist immerhin auch alles für Delphi 3.


And by the way to lukie: Ich bin wahrscheinlich nur zu blöd aber ich habe dich immer noch nicht verstanden

Gruß
MrFish

sakura 16. Jul 2003 21:45

Re: Assignfile: Anfänger versteht das Konzept nicht.
 
Zu Zeiten von Delphi 3 gab es zwar auch schon die StringListen, aber damals war man noch "flexibler" :-D Im Ernst, in den letzten Jahren hat sich die Ansicht zum Dateihandling, vor allem durch das bessere Caching seit Windows 2000, geändert. Für die "Zeit von Delphi 3" ist die Lösung akzeptabel, aber man sollte versuchen davon wegzukommen, auch mit Delphi 3.

Eine Ausnahme ist vielleicht, wenn man die Datei nur öffnet, einen Datensatz ranhängt und wieder schließt, dann wäre eine StringListe ein wirklicher Performance-Verlust.

...:cat:...

MrFish 16. Jul 2003 21:55

Re: Assignfile: Anfänger versteht das Konzept nicht.
 
Danke
du hast mir sehr weitergeholfen.

Du sagst das Assignfile immer noch sinnvoll sein kann.
Hast du vielleicht noch einen Tip wie ich das Konzept verstehen kann?

Chewie 16. Jul 2003 22:01

Re: Assignfile: Anfänger versteht das Konzept nicht.
 
Das Konzept ist eigentlich ganz simpel.

Mit AssignFile wird einer Dateivariablen der Pfad einer Datei zugewiesen. Nicht mehr, nicht weniger.

Erst bei einem Aufruf von Reset, Rewrite oder Append wird die Datei wirklich geöffnet. Es kann also erst hier auch ein Fehler auftreten, wenn die Datei beispielsweise bereits geöffnet oder gar nicht vorhanden ist.

MrFish 16. Jul 2003 22:12

Re: Assignfile: Anfänger versteht das Konzept nicht.
 
Danke Chewie

Assignfile(f,Filename)

Filename hab ich verstanden.
mit f hab ich mein Problem.

meine Daten sind in der Variabelen:
TACListe : Array[1..200,1..3] of String;
gespeichert.
wie kriege ich das mit f in verbindung?

Snoop007 16. Jul 2003 23:36

Re: Assignfile: Anfänger versteht das Konzept nicht.
 
ich gehe mal davon aus das du weisst wie du an den inhalt von array kommst -> ansonsten guck mal bei sakuras post wie man auf array's zugreif

dewegen verweden ich hier nur einen string; der einfachheit halber
Delphi-Quellcode:
var
  f : TextFile;
  s : string;
begin
  s := 'Hallo';
  AssignFile(f,'c:\meinedatei.mein');
  rewrite(f);
  WriteLn(f,s);
  closefile(f);
end;
was wird hier gemacht
f ist eine variable vom typ TextFile; sie könnte auch vom typ file sein oder einen selbstdefinierten typ ( was ich in deinem fall bevorzugen würde )
s ist vom typ string und erhält die zeichenkette hallo

assignfile sagt der variablen f das sie auf die datei c:\meinedatei.mein "zeigen" soll
rewrite erstellt eine neue datei mit dem angegebenen namen ( siehe assignfile ) öffnet die datei und positioniert den datenzeiger an den anfang ( muss ja auch sein, wäre schlecht du fägst in der 2. zeile zu schreiben an ;) )
Writeln schreibt nun in die datei f den wert s
man könnte auch write benutzen, wirteln hängt nur ein CRL an die zeile an
mit closefile wird die datei geschlossen, damit andere anwendungen daraufzugreifen können

was noch interessant dabei ist, reset, append, seek, write, read, readln
und nicht die systemschalter vergessn {$i-} und {$i+}

morpheus090682 8. Feb 2010 14:30

Re: Assignfile: Anfänger versteht das Konzept nicht.
 
Habe dieses Thema hir gefunden bei mir klappt es nun auch alles aber nun schreibt er mir immer eine Zahl in die txt
wie kann ich es machen das er jedesmal eine neue reihe anfängt???

P.S. Mir ist klar das dies von 2003 ist aber vielleicht kann mir das ja jemand beantworten

DeddyH 8. Feb 2010 14:37

Re: Assignfile: Anfänger versteht das Konzept nicht.
 
Immer langsam mit den jungen Pferden. Du solltest uns vielleicht erst einmal mitteilen, was Du in welcher Form in Deiner Datei haben möchtest und wie Dein bisheriger Quelltext aussieht ;)

morpheus090682 8. Feb 2010 14:40

Re: Assignfile: Anfänger versteht das Konzept nicht.
 
Delphi-Quellcode:
begin
    i2cOut(0);
    i2cStop;
    i2cStart;
    i2cOut(b + 1);
    Temperatur := i2cLM75_in;
    eLM75_Temp.Text := Formatfloat('##,##0.00',Temperatur);
    AssignFile(f,'c:\test.txt');
    rewrite(f);
    WriteLn(f,eLM75_Temp.text);
    closefile(f);

End

So sieht es aus. Die Temperatur schreibt er nun in die txt aber
er überschreibt mir den wert immer wieder.
Ich möchte aber das die werte untereinander geschrieben werden.

kally 8. Feb 2010 14:41

Re: Assignfile: Anfänger versteht das Konzept nicht.
 
Hallo,
sieh mal unter carriage return, line feed !
Weiter den Unterschied von Write und WriteLN !
Das gleich auch unter read.....

Gruss
Kally

Luciano 8. Feb 2010 14:49

Re: Assignfile: Anfänger versteht das Konzept nicht.
 
@morpheus090682
statt
Delphi-Quellcode:
rewrite(f)
versuche mal
Delphi-Quellcode:
append(f)
Gruß

morpheus090682 8. Feb 2010 14:55

Re: Assignfile: Anfänger versteht das Konzept nicht.
 
OK werde ich mal Testen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 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