Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   problem mit Writeln, bitte helft mir... (https://www.delphipraxis.net/64700-problem-mit-writeln-bitte-helft-mir.html)

mmfembr 7. Mär 2006 08:39


problem mit Writeln, bitte helft mir...
 
hallo zusammen

in meinem problem geht es darum 8 zeilen eines array's in ein textfile zu schreiben, jedoch entsteht bei der kompilation ein fehler:

[Fehler] UNIT1.PAS(986): Ungültiger Typ in Write/Writeln-Anweisung

leider komme ich nicht dahinter was es sein könnte, bitte helft mir

Code:
procedure THauptformular.sbtnKonvertierenClick(Sender: TObject);
var
  hexarray     : array[0..7] of String;
  y            : Word;
  Testvariable : string;
  Textfile     : file;
.
.
.
.
begin
  Assignfile(Textfile,'C:\Dokumente und Einstellungen\mmfembr\Desktop\test.txt');
  Rewrite(Textfile);
  Testvariable := '';
  For y := 0 to 7 do
    begin
      Testvariable := hexarray[0];
      Writeln(Textfile, PChar(Testvariable));
    end;
  CloseFile(Textfile);
end;
end.

Klaus01 7. Mär 2006 08:44

Re: problem mit Writeln, bitte helft mir...
 
writeln erwartet einen String und kein PChar

Grüße
Klaus

mkinzler 7. Mär 2006 08:45

Re: problem mit Writeln, bitte helft mir...
 
Warum castest du Testvariable in einen PChar ?

mmfembr 7. Mär 2006 08:47

Re: problem mit Writeln, bitte helft mir...
 
leider hat es nicht funktioniert mit einem string, daher dachte ich, ich setz mal einen zeiger drauf...

habt ihr noch eine andere idee?

Klaus01 7. Mär 2006 08:52

Re: problem mit Writeln, bitte helft mir...
 
TextFile ist ein Typenbezeichner

Wähle für Deine Datei einen anderer Variablennamen.

Delphi-Quellcode:
procedure THauptformular.sbtnKonvertierenClick(Sender: TObject);
var
  hexarray     : array[0..7] of String;
  y            : Word;
  Testvariable : string;
  Tfile     : TextFile;
.
.
.
.
begin
  Assignfile(Tfile,'C:\Dokumente und Einstellungen\mmfembr\Desktop\test.txt');
  Rewrite(Tfile);
  Testvariable := '';
  For y := 0 to 7 do
    begin
      Testvariable := hexarray[0];
      Writeln(Tfile, Testvariable);
    end;
  CloseFile(Tfile);
end;
end.
Grüße
Klaus

mbamler 7. Mär 2006 08:53

Re: problem mit Writeln, bitte helft mir...
 
Zitat:

Zitat von mmfembr
leider hat es nicht funktioniert mit einem string, daher dachte ich, ich setz mal einen zeiger drauf...

habt ihr noch eine andere idee?


For y := 0 to 7 do
begin
Writeln(Textfile, hexarray[y]);
end;
CloseFile(Textfile);

mmfembr 7. Mär 2006 08:58

Re: problem mit Writeln, bitte helft mir...
 
ich hab's nun versucht mit einer anderen variable, was jedoch nicht gegangen ist. zusätzlich versuchte ich es wie im beispiel von mbamler was auch nicht geht da die typen miteinander inkonpatibel sind...

mkinzler 7. Mär 2006 09:01

Re: problem mit Writeln, bitte helft mir...
 
Hast du gesehen das Klaus01 den Typ von File auf Textfile geändert hat?

freak4fun 7. Mär 2006 09:02

Re: problem mit Writeln, bitte helft mir...
 
Dann zeig doch mal wie es nach der Änderung aussieht. :) Wenn der Variablenname geändert ist und das PChar entfernt wurde müsste es duch laufen. :gruebel:

MfG
freak

mmfembr 7. Mär 2006 09:04

Re: problem mit Writeln, bitte helft mir...
 
ja, hab's gerade gesehen, jedoch bekomme ich nun einen anderen fehler, jedoch ist dieser behoben ... besten dank!

:hello:


gruss mmfembr

mbamler 7. Mär 2006 09:06

Re: problem mit Writeln, bitte helft mir...
 
Zitat:

Zitat von mmfembr
ich hab's nun versucht mit einer anderen variable, was jedoch nicht gegangen ist. zusätzlich versuchte ich es wie im beispiel von mbamler was auch nicht geht da die typen miteinander inkonpatibel sind...


folgender Code funktioniert 100%:



procedure TForm1.Button1Click(Sender: TObject);
var
hexarray : array[0..7] of String;
y : Word;
Testvariable : string;
Tfile : TextFile;
begin
hexarray[0] := 'AA';
hexarray[1] := 'FF';
hexarray[2] := '00';
hexarray[3] := '09';
hexarray[4] := '01';
hexarray[5] := 'BB';
hexarray[6] := 'DF';
hexarray[7] := 'CA';

Assignfile(Tfile,'C:\temp\test.txt');
Rewrite(Tfile);

For y := 0 to 7 do
begin
Writeln(Tfile, hexarray[y]);
end;

CloseFile(Tfile);
end;

mmfembr 7. Mär 2006 09:09

Re: problem mit Writeln, bitte helft mir...
 
nochmals besten dank für eure mühe, meine software funktioniert jetzt einwandfrei, hatte nur noch dass problem dass ich einen array abgefragt habe , welcher 0..7 ist und ich habe 0..8 abgefragt...

gruss mmfembr

:coder:

turboPASCAL 7. Mär 2006 09:21

Re: problem mit Writeln, bitte helft mir...
 
Moin, genau so geht das.

Verwende doch bitte Die Delphi-Tags. (Tastenkombi. ALT + d)

Den Namen der Variablen TextFile würde ich umbenennen.

Delphi-Quellcode:
procedure THauptformular.sbtnKonvertierenClick(Sender: TObject);
const
  Max_ArrayItems = 7;
var
  hexarray      : array[0..Max_ArrayItems] of String;
  y             : Word;
  Testvariable  : string;
  Tfile         : TextFile;
.
.
.
begin
  AssignFile(Tfile, ExtractFilePath(ParamStr(0)) + 'test.txt');
  {$I-}  // Fehlerprüfung
  Rewrite(Tfile);
  {$i+}
  if IOResult = 0 then
  begin
    For y := 0 to Max_ArrayItems do
      Writeln(Tfile, hexarray[y]);
  end else
  begin
    Messagebox(Handle,'','Fehler', MB_ICONREEOR or MB_OK);
  end;
  CloseFile(Tfile);
end;
// Edit: Huch, er hat es ja schon, die Beiträge wurden bei mir erst kor. Angezeigt als ich den Cache gelöscht hatte. :gruebel: Die Fehlerprüfung solltest du aber machen.


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