Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   QBasic Compiler coden..? (https://www.delphipraxis.net/14676-qbasic-compiler-coden.html)

alanblack 13. Jan 2004 21:07


QBasic Compiler coden..?
 
Hi Leutz,

Ich hoffe ihr könnt mir helfen. Ich arbeite an einem Editor der auch die Sprache Quick Basic beherschen soll. Alles schön und gut, nun will ich dafür auch einen Compiler schreiben.

Also ein Edit daneben ein Button "Durchsuchen" <- man wählt die Source also die Quellentext Datei aus.

Noch ein Edit in den man eingibt wie die ausgeführte EXE Datei heißen soll.

Ein Button "Erstellen" <- man klickt drauf und die EXE Datei wird ausgeführt.

Meine Frage an euch, wie soll die Onclick funktion heißen ? :gruebel:

Hat da jemand von euch ne Ahnung? Würde mich sehr freuen...

Bis dann

mfg alanblack

SirThornberry 13. Jan 2004 21:28

Re: QBasic Compiler coden..?
 
Das ist doch eigentlich völlig egal wie die on-click-routine heißen soll - eventuell BtnCompileQBSourceClick

Und das ganze compilieren kannst du am einfachsten in dem du den compiler von basic aufrufst mit parameter

Leuselator 13. Jan 2004 22:56

Re: QBasic Compiler coden..?
 
Und ich dachte immer, Basic sei eine Interpretersprache...
Gruß

Rainer_Unger 14. Jan 2004 04:58

Re: QBasic Compiler coden..?
 
Hallo,

seit wann kann ein Editor Basic beherrschen. Schon die Frage ziehlt eigentlich schon daneben. Überhaupt frag nich mich was das Ganze soll. Bei Quick Basic ist ein Editor dabei.

Rainer

BungeeBug 14. Jan 2004 05:50

Re: QBasic Compiler coden..?
 
Zitat:

Zitat von Leuselator
Und ich dachte immer, Basic sei eine Interpretersprache...
Gruß

Dann google mal nach na aktuellen Version :=) Du wirst dich wundern was M$ alles gemacht hat damit nen paar Leute nich zu Borland Delphi wechseln :)

Man kann ab QB 4 auch EXE Dateien erstellen ... was das Programm aber weder schneller noch brauchbarere macht. Im Pronziep ist das nur der Compiler der als Resource den Code dabeit hat ...

Phoenix 14. Jan 2004 06:52

Re: QBasic Compiler coden..?
 
Also zumindest die Programme die ich damals (vor ährm... 7 Jahren ca. - *shrug* bin ich alt) mit QBasic geschrieben habe waren echte compilate.

Aber zu compilern im allgemeinen kann ich nur sagen:
- entweder Du vergisst das ganz schnell und rufst tatsächlich nur den 'normalen' bereits vorhandenen compiler auf (den Du imho aber nicht mit ausliefern darfst)

- oder Du bist wirklich gut, kennst das Drachenbuch in- und auswendig und schreibst den Compiler tatsächlich selber :o

Dürfte aber ein nicht ganz so triviales Problem sein... Compiler haben es in sich.

alanblack 14. Jan 2004 15:38

Re: QBasic Compiler coden..?
 
hallo,

jo gut, meine frage jezt (kenn mich da nich so aus)

wie steuer ich den Compiler von QBasic mit Delphi an, sodass die angaben im Delphi Project (die man eingibt (Quellendatei, EXE Name) dass der QBasic Compiler mit den Daten arbeiten kann.
Kann mir vielleicht jemand ein Beispiel geben? :?

mfg alan

EConvertError 14. Jan 2004 16:28

Re: QBasic Compiler coden..?
 
Hallo!

Die selbe Frage wollte ich heute zufälligerweise auch stellen. Ich will ebenfalls den QBasic Interpreter (so viel ich weiß ist es ja kein Compiler) von außen durch Delphi bedienen oder zumindest die die in meinem Editor befindlichen Quelltext ausführen.

Kann man das vielleicht irgendwie so aufrufen: qbasicinterpreter.exe -quelltextdateiname ?
Weiß vielleicht jemand wie man das Zeugs genau aufruft?

mfg
EConvertError

Luckie 14. Jan 2004 16:35

Re: QBasic Compiler coden..?
 
Sollte in der Hilfe / Dokumentation stehen.

scp 14. Jan 2004 16:53

Re: QBasic Compiler coden..?
 
Code:
d:\SOFTWARE\Prgrming\pds71>bc /?
Microsoft (R) BASIC Compiler Version 7.10
Copyright (C) Microsoft Corporation 1982-1990. All rights reserved.

Usage: BC sourcefile [objectfile][listingfile] [optionlist] [;]
Options:

/?    Display BC options          /Ii:n Set number of ISAM indexes
/A   Generate assembly listing   /Lp  OS/2 protected mode
/Ah  Enable huge dynamic arrays  /Lr  DOS or OS/2 real mode
/C:n Set default COM buffer size /MBF Support MS binary format numbers
/D   Run-time error checking     /O   Compile stand-alone EXE
/E   Enable ON ERROR checking    /Ot  Quick call optimization
/Es  Enable EMS sharing          /R   Store arrays in row-major order
/FBr Restricted Browse info      /S   Disable string compression
/FBx Extended Browse info        /T   Terse: no compiler warnings
/FPa Alternate math pack         /V   ON EVENT check each statement
/FPi 80x87 or emulator math pack /W   ON EVENT check each label
/Fs  Enable far-string support   /X   Enable RESUME NEXT support
/G2   Code generation for 286      /Z   PWB-style error messages
/Help Display help on BC          /Zd  Limited CodeView information
/Ib:n Set number of ISAM buffers  /Zi  Full CodeView information
/Ie:n Reserve non-ISAM EMS
Das meiste dürfte auch für ältere Compiler gelten.

alanblack 14. Jan 2004 17:08

Re: QBasic Compiler coden..?
 
hi scp,

was bringt der code? verstehe ich nich so ganz..?
soll ich den im Delphi Script einfügen?
wenn ja wie? das kann nich so ganz stimmen oder das sind alles keine Delphi anweisungen?
erklär mir mal bitte wie das machen soll

mfg alan

scp 14. Jan 2004 17:18

Re: QBasic Compiler coden..?
 
Nein, dass sind die Parameter zum aufrufen, starten kannst du ihn von Delphi aus z.B. so:

Delphi-Quellcode:
var
  QBCompilerDir : String;
  QBCompiler : String;
  BASfile : String;

begin
  QBCompilerDir := 'C:\qb45'; // Ordner, in dem der Complier ist
  QBCompiler := 'bc.exe';
  BASfile := 'C:\BAS\meine.bas';
  ShellExecute(0, 'open', PChar(QBCompilerDir + '\' + QBCompiler), PChar(BASfile), PChar(QBCompilerDir), sw_ShowNormal);
end;

EConvertError 21. Feb 2004 10:13

Re: QBasic Compiler coden..?
 
Danke erstmal, aber ich hätte da noch 2 Fragen:
1)Wie bekomme ich die Compiler-Fehlermeldungen und Warnungen so wie in Delphi in mein Programm?

2)Gibt es da auch so etwas wie einen Debugger, damit ich Breakpoints und das ganze Zeugs machen kann? Und wenn ja, wie bedient man den von außen (und bekommt die Informationen ins Programm)?

Danke schon im voraus,
EConvertError

DP-Maintenance 21. Feb 2004 10:29

DP-Maintenance
 
Dieses Thema wurde von "Daniel" von "VCL-Komponenten und Controls" nach "Programmieren allgemein" verschoben.

orion3000 21. Feb 2004 10:54

Re: QBasic Compiler coden..?
 
Hallo versuchsmal mit der Function...

Delphi-Quellcode:
function GetConsoleOutput(const Command: String; var Output, Errors: TStringList): Boolean;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
  SecurityAttr: TSecurityAttributes;
  PipeOutputRead: THandle;
  PipeOutputWrite: THandle;
  PipeErrorsRead: THandle;
  PipeErrorsWrite: THandle;
  Succeed: Boolean;
  Buffer: array [0..255] of Char;
  NumberOfBytesRead: DWORD;
  Stream: TMemoryStream;
begin
  //Initialisierung ProcessInfo
  FillChar(ProcessInfo, SizeOf(TProcessInformation), 0);

  //Initialisierung SecurityAttr
  FillChar(SecurityAttr, SizeOf(TSecurityAttributes), 0);
  SecurityAttr.nLength := SizeOf(SecurityAttr);
  SecurityAttr.bInheritHandle := true;
  SecurityAttr.lpSecurityDescriptor := nil;

  //Pipes erzeugen
  CreatePipe(PipeOutputRead, PipeOutputWrite, @SecurityAttr, 0);
  CreatePipe(PipeErrorsRead, PipeErrorsWrite, @SecurityAttr, 0);

  //Initialisierung StartupInfo
  FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
  StartupInfo.cb:=SizeOf(StartupInfo);
  StartupInfo.hStdInput := 0;
  StartupInfo.hStdOutput := PipeOutputWrite;
  StartupInfo.hStdError := PipeErrorsWrite;
  StartupInfo.wShowWindow := sw_Hide;
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;

  if CreateProcess(nil, PChar(command), nil, nil, true,
  CREATE_DEFAULT_ERROR_MODE or CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil,
  StartupInfo, ProcessInfo) then begin
    result:=true;
    //Write-Pipes schließen
    CloseHandle(PipeOutputWrite);
    CloseHandle(PipeErrorsWrite);

    //Ausgabe Read-Pipe auslesen
    Stream := TMemoryStream.Create;
    try
      while true do begin
        succeed := ReadFile(PipeOutputRead, Buffer, 255, NumberOfBytesRead, nil);
        if not succeed then break;
        Stream.Write(Buffer, NumberOfBytesRead);
      end;
      Stream.Position := 0;
      Output.LoadFromStream(Stream);
    finally
      Stream.Free;
    end;
    CloseHandle(PipeOutputRead);

    //Fehler Read-Pipe auslesen
    Stream := TMemoryStream.Create;
    try
      while true do begin
        succeed := ReadFile(PipeErrorsRead, Buffer, 255, NumberOfBytesRead, nil);
        if not succeed then break;
        Stream.Write(Buffer, NumberOfBytesRead);
      end;
      Stream.Position := 0;
      Errors.LoadFromStream(Stream);
    finally
      Stream.Free;
    end;
    CloseHandle(PipeErrorsRead);

    WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
    CloseHandle(ProcessInfo.hProcess);
  end
  else begin
    result:=false;
    CloseHandle(PipeOutputRead);
    CloseHandle(PipeOutputWrite);
    CloseHandle(PipeErrorsRead);
    CloseHandle(PipeErrorsWrite);
  end;
end;

Aufruf der Funktion

Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var Output, Errors: TStringList;
begin
Output:=Tstringlist.Create;
Errors:=TStringList.Create;
GetConsoleOutput('attrib.exe C:\*.*',Output,Errors);
listbox1.Items.Text:=output.Text;
listbox2.Items.Text:=Errors.Text;
Errors.free;
Output.Free;
end;

Gruß Orion3000

EConvertError 22. Feb 2004 09:08

Re: QBasic Compiler coden..?
 
Danke, das sieht gut aus.

Genial wäre jetzt noch, wenn noch jemand wüsste wie ich einen Debugger realisieren kann (oder wie ich den QBasic Debugger ansteuern kann).

mfg,
EConvertError


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:13 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