interner Assembler Error 178606 bei ReadLN()

pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

interner Assembler Error 178606 bei ReadLN()

 · 
Posted: 29.11.2018 - 18:25  ·  #1
Hallo rolf,

ich habe zum ersten mal ReadLn() mit der SD-Karte nutzen wollen, leider führt dies zum "interner Assembler Error 178606"

Compiler läuft durch, nur beim Make kommt der Fehler.

Code
// HilfeSystem
   DispHelpView   : Array[0..5] of string[40];
   HelpDirView     : TPathStr;
   Help_DateiView  : file of String[40]; // File of String für ReadLn
   HelpDatei_NameView : TFileName;


Code
// Help von SD Lesen
//
procedure Read_Help( iChange: integer);
var
 xFor, xstrNo, strNo : byte;
 HelpStrBuffer : string[40]; // für den ersten Test
 
begin

  if not bMMCok then    // Keine SD Card, erstelle Meldung
    DebugOut('ReadHelp 199');
     Return; // Funktion beenden
  endif;

  sdAktive();   // Timer für SD Anzeige auf LCD

   HelpDirView := 'hlp';
    // Dateiname erzeugen
    HelpDatei_NameView := 'h1.plp';


      F16_FileAssign(Help_DateiView, HelpDirView, HelpDatei_NameView);// Handle mit FileNamen verknüpfen
      if F16_FileExist(HelpDirView, HelpDatei_NameView,faAnyFile) then
        if not F16_FileReset(Help_DateiView) then               // vorhandene Datei öffnen
           DebugOut('ReadHelp 200');
           return;
        endif;
         DebugOut('201');

      else // File Exist
         DebugOut('ReadHelp 202');
           return;
      endif; // File Exist

       CLR_Help; //lösche Anzeige Speicher für LCD

        // hier bei ReadLn() kommt der Fehler...
        ReadLn(Help_DateiView,  HelpStrBuffer );  // zum Test nur eine Zeile lesen!
          DebugOut('Read Help: ' +HelpStrBuffer);
             
             // prüfe pb EOF (kommt später in die Schleife nach  jedem ReadLn()
              if F16_EndOfFile(Help_DateiView) then
                DebugOut('HELP Dateiennde');
                      if not F16_FileClose(Log_DateiView) then                         // File schließen
                          DebugOut('203');
                      endif; // CloseFile
                   return;
              endif;

       DebugOut('204');

      if not F16_FileClose(Log_DateiView) then                         // File schließen
        DebugOut('205');
      endif; // CloseFile

end Read_Help;

Wenn ich das ReadLn() ausklammere geht auch der Make.

Bis jetzt hatte ich noch nie ReadLn für meine SD-Card genutzt, aber es wäre hier sinnvoll.

Woher weiss der Compiler eigentlich das es ein Fat16 Zugriff ist?
Ich hatte so einen ähnlichen Fehler mal, als ich aus versehen "FileClose" statt "F16_FileClose", verwendet hatte.

Hast Du eine Idee oder muß ich ein Testprogramm zusammenstellen?

Thorsten
Attachments
Meldung1
Filename: 29-11-_2018_18-05-25.jpg
Filesize: 63.14 KB
Title: Meldung1
Information: Meldung1
Download counter: 100
Meldung2
Filename: 29-11-_2018_18-04-51.jpg
Filesize: 24.58 KB
Title: Meldung2
Information: Meldung2
Download counter: 81
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: interner Assembler Error 178606 bei ReadLN()

 · 
Posted: 29.11.2018 - 19:35  ·  #2
Hallo Thorsten,
der Compiler weiss dass aus einem File of String mit ReadLn gelesen werden soll.
Das erste Argument im ReadLn ist ja ein solches File.

Aber offensichtlich wurde die System Funktion "_FILEREAD_STR" aus irgendwelchen
Gründen nicht importiert.
Und ja, ein kleines und sehr abgespecktes Testprogramm wäre sehr hilfreich.

rolf
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: interner Assembler Error 178606 bei ReadLN()

 · 
Posted: 29.11.2018 - 21:10  ·  #3
Hallo rolf,

Testprogramm ist per PM an Dich raus.

Thorsten
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: interner Assembler Error 178606 bei ReadLN()

 · 
Posted: 29.11.2018 - 22:36  ·  #4
Hallo Thorsten,
hier wurde das alte und sehr einfache Filesystem mit FAT16 vermengt!
Im Fat16/32 gibt es kein "File of string[]" sondern nur "File of Text".
Und so funzt es:
var
Help_Datei : file of Text;

rolf
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: interner Assembler Error 178606 bei ReadLN()

 · 
Posted: 01.12.2018 - 13:21  ·  #5
Quote by rh

Hallo Thorsten,
hier wurde das alte und sehr einfache Filesystem mit FAT16 vermengt!
Im Fat16/32 gibt es kein "File of string[]" sondern nur "File of Text".
Und so funzt es:
var
Help_Datei : file of Text;

rolf


Danke rolf,

als ich im Handbuch geschaut habe, bin ich immer wieder bei "File of String" hängen geblieben ;-)

Kann man da evtl. einen klaren Compiler-Fehler ausgeben?

Habe aber das ReadLn durchgetestet, ist nicht praktikabel, für das durchscrollen über mehrere Seiten.
Ich habe mir gerade ein Windows-Programm erstellt (Delphi). Das mir meine Textdatei in eine Bin Datei mit festen Stringlängen abspeichert. So kann man schneller mit Seek auf die Zeilen zugreifen. Gerade beim hoch und runterscrollen auf dem kleinen Display 7 Zeilen Text ist das schneller.

Thorsten
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 15   98   113 · Page-Gen-Time: 0.029482s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI