Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   fputc für Delphi? (https://www.delphipraxis.net/89566-fputc-fuer-delphi.html)

Neutral General 2. Apr 2007 15:07


fputc für Delphi?
 
Hi,

Die Procedure fputc schreibt ein Char in eine Datei die man (in Delphi) mit AssignFile geöffnet hat.

Was benutzt man da in Delphi? Ich benutze gerade das hier:

Delphi-Quellcode:
BlockWrite(file,Buf,1);
geht das? Weil mein Programm funktioniert nicht.. die Frage ist halt ob es daran liegt...

Außerdem hab ich da ein kleines Problem mit for-Schleifen:

Code:
for(i = i + j; i < 0x1000 - sizeof(bla) + 1; i++)
fputc(bla,bla);
Code:
for( j = 0; i < 0x1000 && j < sizeof(bla) - 1; i++, j++)
Keine Ahnung wie ich sowas übersetzen soll o.O

Ich meine das erste geht zwar theoretisch aber

Delphi-Quellcode:
for i:= i + j to $1000-SizeOf(Bla)+1 do
 ...
ist schon seltsam...

Gruß
Neutral General

scrat1979 2. Apr 2007 15:13

Re: fputc für Delphi?
 
Zitat:

Zitat von Neutral General
Hi,

Die Procedure fputc schreibt ein Char in eine Datei die man (in Delphi) mit AssignFile geöffnet hat.

Was benutzt man da in Delphi? Ich benutze gerade das hier:

Delphi-Quellcode:
BlockWrite(file,Buf,1);
geht das? Weil mein Programm funktioniert nicht.. die Frage ist halt ob es daran liegt...

Probier doch mal folgendes. Die Datei muss aber mit Schreibzugriff geöffnet werden (z.B. Rewrite(file) ).

Delphi-Quellcode:
VAR
datei : textfile;
s   : string;
[...]

AssignFile(datei, 'test.txt');
Rewrite(datei);
s := 'g';
Write(datei, s); // Schreibt ein 'g' in die Datei OHNE Zeilenumbruch (sonst writeLN(file, s) )
CloseFile(datei);
Hoffe dies hilft Dir weiter, ein Blick in die OnlineHilfe mit den verwendeten Begriffen könnte Dir auch weiterhelfen, evtl. mit Beispiel-code, keine Ahnung. Was die übersetzung der For... Schleife angeht, da fehlen mir die Grundkenntnisse in der Quellsprache :-)

Grüsse,

SCRaT

Neutral General 2. Apr 2007 15:19

Re: fputc für Delphi?
 
Hi,

Das Problem ist vielleicht das ich keine Textdatei habe sondern ein JPEG öffne und da reinschreiben will.
Und da funktioniert Write nicht (wenn file: File).

Gruß
Neutral General

Klaus01 2. Apr 2007 15:23

Re: fputc für Delphi?
 
Code:
for( j = 0; i < 0x1000 && j < sizeof(bla) - 1; i++, j++)
sollte in etwa so übersetzt werden.

Delphi-Quellcode:
j:=0;

while (i < $1000) and (j < sizeof(bla)-1) do
  begin
    inc(i);
    inc(j);
  end;
Wenn der Datei Type = char oder Byte ist,
kann dort auch mit Write hineingeschrieben werden.
Delphi-Quellcode:
Datei : File of Char;
c    : Char;
  ..


  write(datei,c)
Grüße
Klaus

scrat1979 2. Apr 2007 15:28

Re: fputc für Delphi?
 
Hmmmm, davon war ja bislang gar nicht die Rede... :gruebel:

Ok, evtl. könnte es so klappen (bei mir funkioniert es):

Delphi-Quellcode:
var datei : tfilestream;
    s    : char;
[...]
  datei := tfilestream.Create('d:\test.txt', fmCreate); // fmCreate evtl. anpassen! -> Hilfe
  s := 'm';
  datei.Write(s, 1);
  datei.free;
Evtl. ist für Dich auch noch datei.position interessant, wenn Du an eine bestimmte Stelle in den Stream schreiben möchtest...

SCRaT

[edit]
mit char funktioniert es auch...
[/edit]

Neutral General 2. Apr 2007 15:32

Re: fputc für Delphi?
 
Hi,

Mh ja das mit dem Stream is auch ne Idee nur im Original wurde halt mit AssignFile etc gearbeitet, deswegen weiß ich jetzt nicht ob das mit Streams funktioniert aber eigentlich: Wieso sollte es nicht gehn?

Gruß
Neutral General

scrat1979 2. Apr 2007 15:35

Re: fputc für Delphi?
 
Müsste eigentlich für Deine Zwecke wesentlich besser sein, auch wenn es etwas gewöhnungsbedürftig ist - das gebe ich zu. Evtl. gibt es ja da Tutorials...

Ein häuftiger Fehler ist, dass man nach dem Öffnen eines Streams vergisst, Position := 0 zu setzen, da sich der Pointer nach dem Öffnen am Ender der Datei befindet. Das nur zur Info. Hat schon vielen Kopfzerbrechen bereitet, der Fehler lässt sich nämlich schlecht finden, wenn man nicht dran denkt... :-)

Und pass auf! "fmCreate" überschreibt die Datei. Andere Konstanten siehe in der OnlineHilfe.


Viel Glück...

SCRaT

P.S.: Weiterer Vorteil des Streams: Du kannst den Stream z.B. dann gleich in eine TImage-Komponente kopieren und anzeigen.

Neutral General 2. Apr 2007 15:39

Re: fputc für Delphi?
 
@Scrat: Keine Angst ich kenn mich mit Streams aus ;) um einiges besser sogar als mit AssignFile und dem ganzen Müll :mrgreen:

Ok danke schonmal.
Mal gucken was sich machen lässt.

Gruß
Neutral General


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:11 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-2025 by Thomas Breitkreuz