AW: haben wir schon Ostern ? - wer findet den Fehler ?
@mytbo: wenn ich mich an Deinen Code halte:
showmessage('size 2: ' + inttostr(sizeof(instructions))); // hier erhalte ich: 4 SetLength(insArr, 2); insArr[0].f := Lit; insArr[1].f := Jmp; ins := @Instructions[0]; // hier knallts ... var FSize: Integer; FileStream: TFileStream; FileStream := TFileStream.Create('test.bin', fmOpenRead); SetLength(Instructions,FSize div sizeof(TInstruction)); FileStream.Read(Instructions, FileStream.Size); // length: 24 |
AW: haben wir schon Ostern ? - wer findet den Fehler ?
Du verwendest verschiedene Techniken. Dann musst du so schreiben:
Delphi-Quellcode:
Alternativ so:
type
TOpCode = (ocLit, ocOpr, ocLod, ocSto, ocCal, ocInt, ocJmp, ocJpc, ocWri); TInstruction = record f: TOpCode; // command l: Byte; // level a: Integer; // address end; PInstruction = ^TInstruction; TInstructions = array of PInstruction; var ins: PInstruction; insArr: TInstructions; begin SetLength(insArr, 2); GetMem(ins, SizeOf(TInstruction)); insArr[0] := ins; ins.f := ocLit; GetMem(ins, SizeOf(TInstruction)); insArr[1] := ins; ins.f := ocJmp; for var i: Integer := Low(insArr) to High(insArr) do ShowMessage(Format('OpCode: %s', [System.TypInfo.GetEnumName(TypeInfo(TOpCode), Ord(insArr[i].f))])); for var i: Integer := Length(insArr) - 1 downto 0 do FreeMem(insArr[i]);
Delphi-Quellcode:
Oder so wie in meinem letzten Post, aber du kannst es nicht beliebig mischen. Die Variante aus dem ersten Post wäre mein Favorit.
var
ins: PInstruction; insArr: TInstructions; insBufferSize: Integer; begin SetLength(insArr, 2); insBufferSize := SizeOf(TInstruction) * Length(insArr); GetMem(ins, insBufferSize); insArr[0] := ins; ins.f := ocLit; Inc(ins); insArr[1] := ins; ins.f := ocJmp; for var i: Integer := Low(insArr) to High(insArr) do ShowMessage(Format('OpCode: %s', [System.TypInfo.GetEnumName(TypeInfo(TOpCode), Ord(insArr[i].f))])); FreeMem(insArr[0], insBufferSize); Bis bald... Thomas |
AW: haben wir schon Ostern ? - wer findet den Fehler ?
Nur mal so.
Was würde ChatGPT dazu sagen? |
AW: haben wir schon Ostern ? - wer findet den Fehler ?
Warum immer wieder neue Threads,
https://www.delphipraxis.net/213934-...ppt-nicht.html https://www.delphipraxis.net/213935-...-new-post.html https://www.delphipraxis.net/213937-...-new-post.html anstatt das eigentliche Problem endlich zu lösen? https://www.delphipraxis.net/213929-...ml#post1528456 |
AW: haben wir schon Ostern ? - wer findet den Fehler ?
Probier Mal
Delphi-Quellcode:
anstatt
BlockRead(bcFile,Instructions[0],FSize);
Delphi-Quellcode:
BlockRead(bcFile,Instructions,FSize);
|
AW: haben wir schon Ostern ? - wer findet den Fehler ?
Zitat:
|
AW: haben wir schon Ostern ? - wer findet den Fehler ?
nein, noch nicht.
Ich hatte in der Zwischenzeit mit einen Pascal-Compiler sowie AsmJit gewerkelt. Danke für Deinen Vorschlag ! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:58 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