![]() |
Altes Delphi/Pascal im neuen BDS....
Moin,
ich bin noch eher am Anfang der Materie Delphi und hab nun auch mal wieder eine Frage die ich los werden möchte. Es geht um die NSD-Editore. Ich hab mir einen kostenlosen besorgt ( ![]() Konkret sind es erstmal die folgenden Punkte: (Wohl etwas mit der Drucker-Ansteuerung) "SetWindowExt" "SetViewportExt" "SetViewPortOrg" (Wohl etwas mit der Windows System Info) "WF_80x87" "WF_CPU486" "WF_CPU386" "WF_CPU286" "GetFreeSystemResources" Bin natürlich immer dankbar für jegliche Art von Hilfe ;) |
Re: Altes Delphi/Pascal im neuen BDS....
Grundsätzlich kannst du mit D2006 auch TP6 Code problemlos kompilieren. Weshalb er bei dir meckert... tja, hab meine Kristallkugel in der Firma gelasen. Poste doch mal die Codeausschnitte, welche er an meckert...
|
Re: Altes Delphi/Pascal im neuen BDS....
Delphi-Quellcode:
Das wäre jetzt der Code-Ausschnitt für die SetWindowExt, etc.
uses
SysUtils, WinTypes, WinProcs, Buttons, Classes, Controls, Clipbrd, Dialogs, ExtCtrls, Forms, Menus, StdCtrls, Printers, IniFiles, Graphics, NSDchild, NSDgraph, NSDtypes, NSDutil, NSDpage, NSDabout; {.....} procedure TNSDEditor.PrintChild(Sender: TObject); var x, y: Integer; r, s: Real; begin {.....} Screen.Cursor := crHourGlass; with TNSDiagram(ActiveMDIChild) do begin Printer.BeginDoc; { set mapping mode, necessary to change Window/Viewport extent !! } SetMapMode(Printer.Canvas.Handle, MM_ISOTROPIC); { set mapping mode } x := round(Printer.PageWidth / NSDlist.zoomFactor * 100); y := round(Printer.PageHeight / NSDlist.zoomFactor * 100); { set window(log.) : viewport(phys.) extent to Page size/Zoom : Page size} SetWindowExt(Printer.Canvas.Handle, x, y); SetViewportExt(Printer.Canvas.Handle, Printer.PageWidth, Printer.PageHeight); r := GetDeviceCaps(Printer.Handle, LOGPIXELSX) / 245 * NSDlist.leftMargin; s := GetDeviceCaps(Printer.Handle, LOGPIXELSY) / 245 * NSDlist.topMargin; { set viewport origin to (leftMargin, topMargin) in pixel } SetViewPortOrg(Printer.Canvas.Handle, round(r), round(s)); Printer.Canvas.Font := NSDImage.Canvas.Font; NSDlist.Print(Printer); SetMapMode(Printer.Canvas.Handle, MM_TEXT); { reset mapping mode to Default } Printer.EndDoc; Und hier der Code-Ausschnitt wo er System-Infos haben möchte:
Delphi-Quellcode:
Beide sind in einer jeweiligen Unit.
uses
SysUtils, WinTypes, WinProcs, Buttons, Classes, Controls, ExtCtrls, Forms, StdCtrls, Graphics; {.....} constructor TAboutBox.Execute(full: Boolean); var AboutBox: TAboutBox; WVersion, DVersion: Word; WinFlags, start_time: LongInt; begin AboutBox := TAboutBox.Create(Application); try with AboutBox do begin { Load application icon } {ProgramIcon.Picture.Graphic := Application.Icon;} {ProgramIcon.Picture.LoadFromFile('G:\delphi\1-nsd\NSD.BMP');} { Set dialog strings } Caption := 'About ' + Application.Title; ProductName.Caption := 'NSD Editor - ReMake'; Version.Caption := 'Version 1.01 - ReMake by ThYpHoOn'; Copyright.Caption := 'Copyright 1996 - Marcel Kalt' + #13#10 + 'UNI Fribourg, Switzerland'; Comments.Caption := 'Project in computer science (third year),' + #13#10 + 'under the direction of Prof. J. Pasquier,'+ #13#10 + 'written by Marcel Kalt'; if full then begin { Get Win/Dos version numbers } WVersion := LoWord(GetVersion); DVersion := HiWord(GetVersion); WinVersion.Caption := IntToStr(LO(WVersion)) + '.' + IntToStr(HI(WVersion)); DosVersion.Caption := IntToStr(HI(DVersion)) + '.' + IntToStr(LO(DVersion)); WinFlags := GetSystemInfo; { Get math coprocessor status } if WinFlags and WF_80x87 > 0 then Coprocessor.Caption := 'Present' else Coprocessor.Caption := 'Not Present'; { Get CPU type } if WinFlags and WF_CPU486 > 0 then CPU.Caption := '486'; if WinFlags and WF_CPU386 > 0 then CPU.Caption := '386'; if WinFlags and WF_CPU286 > 0 then CPU.Caption := '286'; { Get free memory, resources, disk space } FreeMemory.Caption := IntToStr(GetFreeSpace(0) div 1000) + ' KB'; FreeResources.Caption := IntToStr(GetFreeSystemResources(GFSR_SYSTEMRESOURCES)) + ' / ' + IntToStr(GetFreeSystemResources(GFSR_GDIRESOURCES)) + ' / ' + IntToStr(GetFreeSystemResources(GFSR_USERRESOURCES)) + ' %'; FreeDisk.Caption := IntToStr(DiskFree(3) div 1000000) + ' MB'; ShowModal; end {....} Den kompletten Source-Code kann man sich übrigens auf ![]() Ich werde jetzt erstmal die betroffenen Passagen ausbauen und einfach erstmal weg lassen, soweit ich das richtig einschätze sind es sowieso nur die Print-Steuerung und die SystemInfos die da fehlen würden. Was mich nicht sonderlich stört. Greetz ThY |
Re: Altes Delphi/Pascal im neuen BDS....
Welche Fehler tauchen denn auf?
|
Re: Altes Delphi/Pascal im neuen BDS....
Wie weit ist denn das Projekt fortgeschritten?
Das Ding von 1996 ist ja recht nett, aber nicht mehr zeitgemäss. |
Re: Altes Delphi/Pascal im neuen BDS....
Zitat:
|
Re: Altes Delphi/Pascal im neuen BDS....
Zitat:
Um die Frage an den TE mal wieder aufzufrischen: Wie weit ist er denn? |
Re: Altes Delphi/Pascal im neuen BDS....
Das freut mich doch sehr, das es so einen Anklang gefunden hat. Tatsächlich ist das Vorhaben etwas in den Hinterkopf gegangen.
Da ich damals als ich den Theard erstellt habe, in der Berufsschule Delphi gelernt habe und nun an der FH Wedel bin um dort Technischer Informatiker (Schwerpunkt auf Medieninformatik) zu werden, habe ich nun Pascal als Programmiersprache. Somit ist es durchaus noch interessant und werde mich in den ersten Monaten 2009 konkret damit auseinander setzen und den NSD-Editor "zeitgemäß" anpassen. Gz ThY |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:46 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