Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi datei einlesen, jedes wort in eigene zeile setzten, dat ausl (https://www.delphipraxis.net/126839-datei-einlesen-jedes-wort-eigene-zeile-setzten-dat-ausl.html)

Molzer 3. Jan 2009 11:02


datei einlesen, jedes wort in eigene zeile setzten, dat ausl
 
hallo!
hab problem mit meiner case of funktion: "ordinaltyp erforderlich"???

Delphi-Quellcode:
var F,g:Textfile;
    c:string;
begin
assignfile (f, 'input.txt');
reset (f);
assignfile (g, 'output.txt');
rewrite (g);

zeile:=' ';
while not eof (f) do
begin
  read (f,c);
  case c of
  'A'..'Z', 'a'..'z', '0'..'9':Zeile + Zeile + f;
  else begin if length (zeile) >0 then writeln (g,zeile);
             zeile:=' ';
  closefile (f);
  closefile (g);
  end;
  end;

  end;

silver-moon-2000 3. Jan 2009 11:20

Re: datei einlesen, jedes wort in eigene zeile setzten, dat
 
Zitat:

Zitat von Molzer
Delphi-Quellcode:
[...]
  case c of
  'A'..'Z', 'a'..'z', '0'..'9':Zeile + Zeile + f;
  else begin if length (zeile) >0 then writeln (g,zeile);
             zeile:=' ';
[...]

Delphi mag bei case keine strings, sondern nur ordinal-typen, also Zahlen.
In Deinem Fall kann man das aber relativ leicht umschreiben. Probier' es mal so (ungetestet):

Delphi-Quellcode:
[...]
var
  c : Char;
  [...]
begin
  if c in ['A'..'Z', 'a'..'z', '0'..'9'] then
    zeile := zeile + f
  else
  begin
    if Length(zeile) > 0 then WriteLn(g, zeile);
    zeile := '';
  end;
[edt] c muss natürlich vom Typ char sein...aargh
hätte heute kürzer schlafen sollen ;-)
[edt2] whopps, da habe ich wohl einige Posts verschlafen während meines edits, sorry fürs nachträgliche editieren

Molzer 3. Jan 2009 11:26

Re: datei einlesen, jedes wort in eigene zeile setzten, dat
 
dafür hab ich jetzt:

[Pascal Fehler] Project1.dpr(20): E2010 Inkompatible Typen: 'string' und 'Char'
[Pascal Fehler] Project1.dpr(22): E2010 Inkompatible Typen: 'string' und 'Text'

Klaus01 3. Jan 2009 11:30

Re: datei einlesen, jedes wort in eigene zeile setzten, dat
 
ersetze den Typ von c durch char.

Grüße
Klaus

Die Muhkuh 3. Jan 2009 11:30

Re: datei einlesen, jedes wort in eigene zeile setzten, dat
 
Delphi-Quellcode:
case c[1] of

Molzer 3. Jan 2009 11:47

Re: datei einlesen, jedes wort in eigene zeile setzten, dat
 
hab noch einen fehler:
[Pascal Fehler] Project1.dpr(23): E2010 Inkompatible Typen: 'string' und 'Text'

in zeile:
else begin if length (zeile) >0 then writeln (g,zeile);

das wird wohl g+zeile sein, aber das sollte ja so sein??

Klaus01 3. Jan 2009 12:20

Re: datei einlesen, jedes wort in eigene zeile setzten, dat
 
Hallo,

mit welcher Delphi Version arbeitet denn Du?
Delphi 2009: String = UniCode
Grüße
Klaus

Molzer 3. Jan 2009 12:23

Re: datei einlesen, jedes wort in eigene zeile setzten, dat
 
Borland® Delphi® für Microsoft® Windows™ Version 10.0.2288.42451 Update 2 Copyright © 2005 Borland® Software Corporation. Alle Rechte vorbehalten.

Klaus01 3. Jan 2009 12:36

Re: datei einlesen, jedes wort in eigene zeile setzten, dat
 
bei
writeln (g,zeile);

g ist Dein FileHandle
zeile ist das was Du in die Datei schreiben willst.

Und String kann/sollte bei Textfile benutzt werden.

Hier bei diesem simplen Beispiel mosert der Parser/Compiler nicht.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  z: String;
  tFile : TextFile;
begin
  assignFile(tFile,'e:\textfile.txt');
  rewrite(tFile);
  z:='12345';
  writeLn(tFile,z);
  closeFile(tFile);

end;
Musst Du mit TextFile arbeiten oder ginge auch eine StringList
oder ein FileStream?

Grüße
Klaus

Molzer 3. Jan 2009 13:10

Re: datei einlesen, jedes wort in eigene zeile setzten, dat
 
aber wieso geht dann das:


Zitat:

Zitat von Molzer
hab noch einen fehler:
[Pascal Fehler] Project1.dpr(23): E2010 Inkompatible Typen: 'string' und 'Text'

in zeile:
else begin if length (zeile) >0 then writeln (g,zeile);

das wird wohl g+zeile sein, aber das sollte ja so sein??

nicht?? is ja eh g=textfile und zeile_=string.


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