Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Jul 03, 2025 06:40

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: TRaiseFrame
BeitragVerfasst: Mo Feb 17, 2003 22:35 
Offline
DGL Member

Registriert: Di Sep 17, 2002 20:37
Beiträge: 58
Hi
könntet mir bitte jemand die Struktur aus der System.pas oder auch SysUtils.pas mit dem Namen TRaiseFrame von Delphi 6 und/oder Delphi 7 posten?

danke :)

_________________
...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 17, 2003 22:54 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Hier die Struktur aus der zu Delphi 7 gehörenden System.pas :
Code:
  1. PRaiseFrame = ^TRaiseFrame;
  2.  
  3.   TRaiseFrame = packed record
  4.  
  5.     NextRaise: PRaiseFrame;
  6.  
  7.     ExceptAddr: Pointer;
  8.  
  9.     ExceptObject: TObject;
  10.  
  11.     ExceptionRecord: PExceptionRecord;
  12.  
  13.   end;
  14.  
  15.  

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 17, 2003 22:55 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 29, 2002 10:37
Beiträge: 251
Wohnort: Ulm
Code:
  1.  
  2.  
  3.  
  4.  
  5. type
  6.  
  7.   JmpInstruction =
  8.  
  9.   packed record
  10.  
  11.     opCode:   Byte;
  12.  
  13.     distance: Longint;
  14.  
  15.   end;
  16.  
  17.   TExcDescEntry =
  18.  
  19.   record
  20.  
  21.     vTable:  Pointer;
  22.  
  23.     handler: Pointer;
  24.  
  25.   end;
  26.  
  27.   PExcDesc = ^TExcDesc;
  28.  
  29.   TExcDesc =
  30.  
  31.   packed record
  32.  
  33. {$IFNDEF PC_MAPPED_EXCEPTIONS}
  34.  
  35.     jmp: JmpInstruction;
  36.  
  37. {$ENDIF}
  38.  
  39.     case Integer of
  40.  
  41.     0:      (instructions: array [0..0] of Byte);
  42.  
  43.     1{...}: (cnt: Integer; excTab: array [0..0{cnt-1}] of TExcDescEntry);
  44.  
  45.   end;
  46.  
  47.  
  48.  
  49. {$IFNDEF PC_MAPPED_EXCEPTIONS}
  50.  
  51.   PExcFrame = ^TExcFrame;
  52.  
  53.   TExcFrame = record
  54.  
  55.     next: PExcFrame;
  56.  
  57.     desc: PExcDesc;
  58.  
  59.     hEBP: Pointer;
  60.  
  61.     case Integer of
  62.  
  63.     0:  ( );
  64.  
  65.     1:  ( ConstructedObject: Pointer );
  66.  
  67.     2:  ( SelfOfMethod: Pointer );
  68.  
  69.   end;
  70.  
  71.  
  72.  
  73.   PExceptionRecord = ^TExceptionRecord;
  74.  
  75.   TExceptionRecord =
  76.  
  77.   record
  78.  
  79.     ExceptionCode        : LongWord;
  80.  
  81.     ExceptionFlags       : LongWord;
  82.  
  83.     OuterException       : PExceptionRecord;
  84.  
  85.     ExceptionAddress     : Pointer;
  86.  
  87.     NumberParameters     : Longint;
  88.  
  89.     case {IsOsException:} Boolean of
  90.  
  91.     True:  (ExceptionInformation : array [0..14] of Longint);
  92.  
  93.     False: (ExceptAddr: Pointer; ExceptObject: Pointer);
  94.  
  95.   end;
  96.  
  97. {$ENDIF}
  98.  
  99.  
  100.  
  101. {$IFDEF PC_MAPPED_EXCEPTIONS}
  102.  
  103.   PRaisedException = ^TRaisedException;
  104.  
  105.   TRaisedException = packed record
  106.  
  107.     RefCount: Integer;
  108.  
  109.     ExceptObject: TObject;
  110.  
  111.     ExceptionAddr: Pointer;
  112.  
  113.     HandlerEBP: LongWord;
  114.  
  115.     Flags: LongWord;
  116.  
  117.   end;
  118.  
  119. {$ELSE}
  120.  
  121.   PRaiseFrame = ^TRaiseFrame;
  122.  
  123.   TRaiseFrame = packed record
  124.  
  125.     NextRaise: PRaiseFrame;
  126.  
  127.     ExceptAddr: Pointer;
  128.  
  129.     ExceptObject: TObject;
  130.  
  131.     ExceptionRecord: PExceptionRecord;
  132.  
  133.   end;
  134.  
  135. {$ENDIF}
  136.  
  137.  
  138.  
  139.  

_________________
http://www.rochus.net


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 17, 2003 23:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Offtopic: Was ist denn ein "packed Record"??? :oops:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 17, 2003 23:14 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zitat:
Offtopic: Was ist denn ein "packed Record"??? :oops:

Wie der Name sagte ein gepackter Record, dessen Speicherverbrauch ggü. einem normalen Record niedriger ist.Allerdings hat er dadurch einen Geschwindigkeitsnachteil.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 17, 2003 23:22 
Offline
DGL Member

Registriert: Di Sep 17, 2002 20:37
Beiträge: 58
danke erstmal für die schnelle antwort :)

@packedrecords

die Speichergröße des Records entspricht wenn packed ist, der tatsächlichen Größe der enthaltenen Variablen
also 4 Variablen á 2 Byte (z.B. Word) und ein Boolean (1 Byte (Standard-Boolean)) macht eine Record-Größe von 9 Byte wenn er packed ist.
Andernfalls erweitert Delphi aus Performancegründen (z.B. Addressierung) den Record hier auf 10 Byte. (idR. auf die nächstgelegene gerade zahl)



packed records verwendest du z.B. wenn du Typen für WinAPI-Funktionen definierst. Die gehen davon aus, das die Records die richtigen Größen haben, ansonsten knallts... oder wenn du records in Dateien speicherst...
Dann kannst du sicher sein, das deine Definitionen Versions und Sprach-übergreifend stimmen...


btw, packed gibts auch für arrays, sets sowie dateien
(also: packed array[...] of, packed set of, packed file of)
dort wird auch kräftig erweitert :)

_________________
...


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 0 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 16 Queries | GZIP : On ]