Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Anzahl der Zeichen in einer Zeile (https://www.delphipraxis.net/28394-anzahl-der-zeichen-einer-zeile.html)

Christian18 24. Aug 2004 11:49


Anzahl der Zeichen in einer Zeile
 
Hallo,

ich habe einen textdatei eingelesen und wollte jetzt ausgeben wie viele zeichen eine zeile enthält. wie mache ich das???

Stevie 24. Aug 2004 11:56

Re: Anzahl der Zeichen in einer Zeile
 
Wenn du es mit der Methode LoadFromFile der Klasse TStrings (oder der Nachkommen) gemacht hast, dann kannst du das mit Length(StringsObjekt.Items[ZeilenNummer]) machen...

Christian18 24. Aug 2004 12:08

Re: Anzahl der Zeichen in einer Zeile
 
hier einmal mei code den ich bis jetzt habe:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var open : TOpenDialog;
      f : TextFile;
      z : array of char;
      i : Integer;
      s : String;
begin
  SetLength(z,10);

  open:=TOpenDialog.Create(self);

  if
    open.Execute
  then
    begin
      AssignFile(f, open.FileName);
      Reset(f);
      for i:=0 to 9 do
        begin
          Read(f, z[i]);
        end;

      CloseFile(f);

      for i:=0 to 9 do
        begin
          s:=s+z[i];
        end;
      Label1.Caption:=s;
    end;
end;
ich verstehe nicht was ich jetzt machen soll.

Mit freundlichen Grüßen Christian18

Nikolas 24. Aug 2004 12:20

Re: Anzahl der Zeichen in einer Zeile
 
ein paar wichtige Sachen:
-Dein Compiler sagt sicherlich:
'Variable 's' möglicherweise nicht initialisiert';

So hast du in 's' immer noch Speichermüll drin und bekommst nie ein richtiges Ergebniss.

Du gehst davon aus, dass deine Datei immer aus 10 Einträgen besteht. Wenn du schreibst'
Delphi-Quellcode:
reset(f);
while not EOF(f) do
readln(f,sonstwohin);
werden alle Zeilen eingelesen.

READ ist für typisierte Dateien, um Textdateien zu lesen ist ReadLn der richtige Weg.

Wenn du einen Opendialog schon dynamisch erstellst, solltest du ihn auch wieder freigeben.

Im Zweiten for-Teil schreibst du alle Zeilen hintereinander.

Wenn du wirklich nur die Zeichenanzahl in deiner Datei haben willst, kannst du die Zeilen auch nur in eine string-Variable einlesen, also:
Delphi-Quellcode:
str:string; i: integer;
...
Assignfile(f,open.filename);
reset(f);
i:=0;
while not EOF(f) do
begin
readln(f,str);
inc(i,length(str));
end;

label1.caption:='Hier hab ich grad '+inttostr(i)+' Zeichen gefunden.';
Ist jetzt nicht getestet aber in die Richtung sollte was gehen


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