interner Assembler Error 178606 bei ReadLN()

pvs-deck
PowerUser
Avatar
Geschlecht:
Alter: 54
Beiträge: 1344
Dabei seit: 02 / 2009
Betreff:

interner Assembler Error 178606 bei ReadLN()

 · 
Gepostet: 29.11.2018 - 18:25 Uhr  ·  #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
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 25
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: interner Assembler Error 178606 bei ReadLN()

 · 
Gepostet: 29.11.2018 - 19:35 Uhr  ·  #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
Geschlecht:
Alter: 54
Beiträge: 1344
Dabei seit: 02 / 2009
Betreff:

Re: interner Assembler Error 178606 bei ReadLN()

 · 
Gepostet: 29.11.2018 - 21:10 Uhr  ·  #3
Hallo rolf,

Testprogramm ist per PM an Dich raus.

Thorsten
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 25
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: interner Assembler Error 178606 bei ReadLN()

 · 
Gepostet: 29.11.2018 - 22:36 Uhr  ·  #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
Geschlecht:
Alter: 54
Beiträge: 1344
Dabei seit: 02 / 2009
Betreff:

Re: interner Assembler Error 178606 bei ReadLN()

 · 
Gepostet: 01.12.2018 - 13:21 Uhr  ·  #5
Zitat geschrieben von 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
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 14 · Cache Hits: 14   96   110 · Page-Gen-Time: 0.027015s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI