Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Was könnte "File* Stream;" in Delphi bedeuten? (https://www.delphipraxis.net/19111-koennte-file%2A-stream%3B-delphi-bedeuten.html)

Virchov 29. Mär 2004 17:06


Was könnte "File* Stream;" in Delphi bedeuten?
 
Tach!
Danke

In c++ ist:
....

File* Stream;
stream = fopen("c:\\larylog.txt", "a");
......



Was ist das in Delphi?


man öffnet einen logfile namens "a"?

Sharky 29. Mär 2004 17:08

Re: Was könnte "File* Stream;" in Delphi bedeuten?
 
TFileStream -> F1

Skiron 29. Mär 2004 17:15

Re: Was könnte "File* Stream;" in Delphi bedeuten?
 
folgendes:
Delphi-Quellcode:
type
  TMyFile = file of string[255];

var
  MyFile: TMyFile;
...
assignFile(MyFile, 'C:\...');
reset(MyFile);
write(MyFile, 'test');
read(MyFile, variable);
//am Ende noch:
closeFile(MyFile);
...

Virchov 29. Mär 2004 17:30

Re: Was könnte "File* Stream;" in Delphi bedeuten?
 
Danke. Also "File* Stream; " kann man in Delphi weglassen und gleichhh mit AssignFile anfangen?

Luckie 29. Mär 2004 17:32

Re: Was könnte "File* Stream;" in Delphi bedeuten?
 
nein, das sind zwei unterschiedliche paar Schuhe. TFileStream entspricht in diesem Fall, was du suchst. Assignfile ist die alte Pascal-Methode um Dateien zu bearbeiten.

Wie wäre es, wenn du beide Begriffe einfach mal in der Hilfe nachschlägst? :roll:

Virchov 29. Mär 2004 17:40

Re: Was könnte "File* Stream;" in Delphi bedeuten?
 
verstehe...

Hab ich schon! In meiner hilfedatei gibt es keine Samples. Nicht mal der Syntax wird erörtert!

Luckie 29. Mär 2004 17:45

Re: Was könnte "File* Stream;" in Delphi bedeuten?
 
Was hast du für ein Delphi? :shock: Und vorallem: Woher hast du es? :gruebel:

Virchov 29. Mär 2004 18:06

Re: Was könnte "File* Stream;" in Delphi bedeuten?
 
Delphi 7

hab ich von einem Bekannten :lol:

Robert Marquardt 29. Mär 2004 18:30

Re: Was könnte "File* Stream;" in Delphi bedeuten?
 
FILE * ist vollkommen C spezifisch und kann nicht nach Delphi umgesetzt werden.
Das Problem ist das der Datentyp FILE ein Teil der C runtime ist und zusatzlich ein Teil des APIs
als C Makro ausgelegt ist.
Weiterhin wird malloc() verwendet das Teil der C Speicherverwaltung ist.
Am ehesten entsprechen die Funktionen aus diesem Bereich einem TReader bzw TWriter, da sie Daten puffern.

Virchov 29. Mär 2004 18:35

Re: Was könnte "File* Stream;" in Delphi bedeuten?
 
Zitat:

Zitat von Robert Marquardt
FILE * ist vollkommen C spezifisch und kann nicht nach Delphi umgesetzt werden.
Das Problem ist das der Datentyp FILE ein Teil der C runtime ist und zusatzlich ein Teil des APIs
als C Makro ausgelegt ist.
Weiterhin wird malloc() verwendet das Teil der C Speicherverwaltung ist.
Am ehesten entsprechen die Funktionen aus diesem Bereich einem TReader bzw TWriter, da sie Daten puffern.


Also, die Prozedur sieht so aus:
Delphi-Quellcode:


procedure pm1( M: pDouble; rowM, colM: integer; str: array of char);


begin
 
FILE* stream;

 stream := fopen("c:\\larylog.txt", "a");

 if (stream) then
  begin
      fputs("*temp. LOGFILE*\n",stream);

      fprintf(stream, "------------ %s --------------\n", str);

      for (int i=1; i<=rowM; i++)
      begin
         fprintf(stream, "[%d][x] = ", i);
         for (int j=1; j<=colM; j++)
            fprintf(stream, "%5.4f ", M[ i*(colM+1) + j]);
         fprintf(stream, "\n");
    end; // for i

      fclose(stream);
  end; // if fopen(stream)
   else
  begin
      MessageBox(0,"Unable to open logfile", "Lary   Message",
         MB_ICONERROR | MB_OK);
  end;
end; // end of pm1()
Ich übersetze es mittels assignfile und append. Scheint am einfachsten... Dieser TFileStream scheint zu beschiessen kompliziert und schwerfällig.Und dazu mies dokumentiert

Virchov 29. Mär 2004 20:26

Re: Was könnte "File* Stream;" in Delphi bedeuten?
 
Übrigens, ist "Assert " in delphi dasselbe wie im C++?

fkerber 29. Mär 2004 20:35

Re: Was könnte "File* Stream;" in Delphi bedeuten?
 
Hi!

Zitat:

Zitat von Virchov
Und dazu mies dokumentiert

Ich weiß nicht, was du für eine Hilfe hast, aber bei mir findet sich schon einiges zum Thema TFilestream.

Ciao fkerber

fkerber 29. Mär 2004 20:37

Re: Was könnte "File* Stream;" in Delphi bedeuten?
 
Hi!

Wegen dem Assert:
Ich weiß nicht, was das in C ist, aber meine Delphi-Hilfe sagt dazu:

Zitat:

Zitat von OH
Die Prozedur prüft, ob ein Boolescher Ausdruck wahr ist.

Unit

System

Kategorie

Sonstige Routinen

Delphi-Syntax:

procedure Assert(expr : Boolean [; const msg: string]);

Beschreibung

In Delphi können Sie mit Assert testen, ob Bedinungen verletzt werden, die als zutreffend angenommen werden. Assert bietet eine Möglichkeit, eine unerwartete Bedingung zu simulieren und ein Programm anzuhalten, anstatt die Ausführung in unbekannter Konstellation fortzusetzen.

Assert übernimmt als Parameter einen Booleschen Ausdruck und einen optionalen Meldungstext. Schlägt der Boolesche Test fehl, löst Assert eine EAssertionFailed-Exception aus. Wenn ein Meldungstext übergeben wurde, wird das Exception-Objekt mit diesem String erzeugt. Andernfalls wird ein Standardtext angezeigt. Zusätzlich wird der Dateipfad, der Dateiname und die Zeilennummer angegeben, in der Assert fehlgeschlagen ist.

Die Unit SysUtil wandelt Laufzeitfehler in Exceptions um. Wenn SysUtil allerdings nicht in die Anwendung eingebunden ist, wird der Laufzeitfehler 227 ausgegeben und keine EAssertionFailed-Exception ausgelöst. Dieser Laufzeitfehler hält das Programm an.

Hinweis: Die Unit SysUtils wird in den meisten CLX-Anwendungen auch dann verwendet, wenn sie nicht explizit der uses-Klausel hinzugefügt wurde. Beispielsweise wird durch die Verwendung der Unit Forms auch die Unit SysUtils einbezogen, weil die Unit Forms SysUtils verwendet

In der Regel werden Assertions nicht in Programmversionen verwendet, die zur Auslieferung vorgesehen sind. Deshalb wurden Compiler-Direktiven implementiert, mit denen die Generierung des zugehörigen Codes deaktiviert werden kann:

$ASSERTIONS ON/OFF (Lange Form)
$C +/- (Kurze Form)

Es handelt sich dabei um globale Optionen, die sich unabhängig von ihrer Position auf die ganze Quelltextdatei auswirken. Der kleinste Gültigkeitsbereich für Assertions ist eine Quelltextdatei. Assertions sind standardmäßig deaktiviert.

Ciao fkerber


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