Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Interner Fehler: LA33 (https://www.delphipraxis.net/134391-interner-fehler-la33.html)

implementation 21. Mai 2009 09:06


Interner Fehler: LA33
 
Momentan macht Delphi bei mir wieder sehr seltsame Probleme.
Delphi-Quellcode:
program wd4gexec;

uses
  Dialogs,
  SysUtils,
  wd4gstruct.postings,
  Forms;

{$R *.res}

var Test: TLogicalList;
var x:string;

begin
   SetLengthOfLogList(Test,48);
   Test[0] := 127;
   SetBitInLogList(Test,2,false);
   ShowMessage(IntToStr(Test[0]));
end.
Wenn ich beispielsweise dieses Programm compilieren will, heißt es entweder in der unteren Leiste
"[Fataler Fehler] wd4gexec.dpr (21): F2084 Interner Fehler: LA33"
oder es erscheint ein Dialog
"Zugriffsverletzung bei Adresse 08717501 in Modul 'dcc90.dll'. Lesen von Adresse 0000000F."
Gestern hat der gleiche Quelltext noch funktioniert.
Delphi-Quellcode:
program wd4gexec;

uses
  Dialogs,
  SysUtils,
  //wd4gstruct.postings,
  Forms;

{$R *.res}

// var Test: TLogicalList;
var x:string;

begin
  // SetLengthOfLogList(Test,48);
  // Test[0] := 127;
  // SetBitInLogList(Test,2,false);
  // ShowMessage(IntToStr(Test[0]));
  WriteLn('lol');
  ReadLn(x);
end.
Wenn ich es in der Form compilieren will, passiert erst einmal gar nichts.

Ergebnis der Reperatur von Delphi: kein Erfolg.
Selbst eine Neuinstallation hat nichts gebracht.

Was geht hier vor?

Die Muhkuh 21. Mai 2009 09:30

Re: Interner Fehler: LA33
 
Was macht SetLengthOfLogList?

Musst Du die Liste nicht erst noch instantiieren?

implementation 21. Mai 2009 09:36

Re: Interner Fehler: LA33
 
TLogicalList ist keine Liste, sondern nur ein dynamisches Array.
SetLengthOfLogList(Test,48 ) bewirkt das gleiche wie SetLength(Test,6)

TLogicalList soll viele logische Werte speichern können.
Sinnvoll wäre ein Array Of Boolean.
Das verbraucht jedoch für jeden Wert im Array ein Byte.

Ich habe es daher so definiert:
type TLogicalList = Array Of Byte;

Dann wird jeder logische Wert durch ein Bit dargestellt.
Die 48 in "SetLengthOfLogList(Test,48 )" steht für 48 Logische Werte = 48 Bits = 6 Bytes.

Um einen einzelnen Wert zu setzen, benutzt man SetBitInLoglist(var Loglist: TLogicalList; index: Word; Value: Boolean);

SetBitInLogList(Test,2,false) setzt also den dritten logischen Wert auf 0 (false).

Bernhard Geyer 21. Mai 2009 21:33

Re: Interner Fehler: LA33
 
Wieso wird gleich im Delphi neu installiert? Zu 99,5% der Fälle ist dies sinnlos da Programmierfehler vorlegen?

Ist dein den nun ein Konsolen oder ein normales GUI-Programm? Für ein Konsolenprogramm ist komisch das die Unit Forms eingebunden ist. Ich Tipp mal drauf das in den Projektoptionen die entsprechende OPtion nicht auf Consolenanwendung steht.

jaenicke 21. Mai 2009 22:39

Re: Interner Fehler: LA33
 
Es fehlt ja auch die entsprechende Zeile, die nach der ersten Zeile dann folgen würde:
Delphi-Quellcode:
{$APPTYPE CONSOLE}

Bernhard Geyer 21. Mai 2009 22:41

Re: Interner Fehler: LA33
 
Ach ja: D2005. Zweitschlechtestes Delphi aller Zeiten. Wenn möglich auf Turbo Delphi wechsenl

mr_emre_d 21. Mai 2009 22:54

Re: Interner Fehler: LA33
 
Zitat:

Zitat von implementation
Dann wird jeder logische Wert durch ein Bit dargestellt.
Die 48 in "SetLengthOfLogList(Test,48 )" steht für 48 Logische Werte = 48 Bits = 6 Bytes

Hab ich etwas verpasst ? Seit wann ist denn ein (Delphi) Byte nur 1/8 Byte ?
Ein Byte = 8 Bits und nicht vice versa -> ..( Test, 48 ) = 48 Bytes

Soweit ich etwas nicht missverstanden habe.

MfG

xZise 21. Mai 2009 23:07

Re: Interner Fehler: LA33
 
Hallo Emre,
ich glaube du hast ihn falsch verstanden: Er speichert mehrere Booleans (= 1 Bit) in einem Byte (= 8 Bit). Wenn er nun 48 Booleans möglichst Platzsparend unterbringen will, dann kann er das in 6 Bytes tun, da 6 Bytes 48 Bit sind.

MfG
xZise

turboPASCAL 21. Mai 2009 23:55

Re: Interner Fehler: LA33
 
Mal das Project neu "erstellt", also nicht nur compiliert?

implementation 22. Mai 2009 07:48

Re: Interner Fehler: LA33
 
Zitat:

Zitat von Bernhard Geyer
Ist dein den nun ein Konsolen oder ein normales GUI-Programm? Für ein Konsolenprogramm ist komisch das die Unit Forms eingebunden ist. Ich Tipp mal drauf das in den Projektoptionen die entsprechende OPtion nicht auf Consolenanwendung steht.

Es ist ein GUI-Programm. Ich habe bei den Linker-Optionen Konsolenprogramm aktiviert. Das ist nicht das Problem.
Zitat:

Zitat von jaenicke
Es fehlt ja auch die entsprechende Zeile, die nach der ersten Zeile dann folgen würde:
Delphi-Quellcode:
{$APPTYPE CONSOLE}

Das kann ich mir dann wohl sparen.
Zitat:

Zitat von Bernhard Geyer
Ach ja: D2005. Zweitschlechtestes Delphi aller Zeiten. Wenn möglich auf Turbo Delphi wechsenl

Bei Turbo Delphi kann ich aber auch keine eigenen Packages installieren, was mir sehr wichtig ist.
Zitat:

Zitat von turboPASCAL
Mal das Project neu "erstellt", also nicht nur compiliert?

Kam nichts anderes bei raus.
Zitat:

Zitat von Bernhard Geyer
Wieso wird gleich im Delphi neu installiert? Zu 99,5% der Fälle ist dies sinnlos da Programmierfehler vorlegen?

Ich kann nur erneut darauf verweisen, dass der selbe Quelltext unverändert ein paar Tage vorher noch funktionierte. Deshalb wird es wohl kaum daran liegen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:08 Uhr.
Seite 1 von 3  1 23      

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