![]() |
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 |
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 |
Re: QBasic Compiler coden..?
Und ich dachte immer, Basic sei eine Interpretersprache...
Gruß |
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 |
Re: QBasic Compiler coden..?
Zitat:
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 ... |
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. |
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 |
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 |
Re: QBasic Compiler coden..?
Sollte in der Hilfe / Dokumentation stehen.
|
Re: QBasic Compiler coden..?
Code:
Das meiste dürfte auch für ältere Compiler gelten.
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 |
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 |
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; |
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
Dieses Thema wurde von "Daniel" von "VCL-Komponenten und Controls" nach "Programmieren allgemein" verschoben.
|
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 |
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 02:47 Uhr. |
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