Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Altes Delphi/Pascal im neuen BDS.... (https://www.delphipraxis.net/106672-altes-delphi-pascal-im-neuen-bds.html)

ThYpHoOn 14. Jan 2008 21:32


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 ( http://diuf.unifr.ch/softeng/student.../kalt/NSD.html ), dort liegt auch praktischer weise ein Source-Code bei. Diesen wollte ich dann mal in meinem BDS (2006) öffnen. Allerdings hat mir dies ein paar Probleme beschafft. Mir ist schon bewusst das dieses NSD-Editor Programm 1997 von einem netten Studenten entwickelt wurde und mein BDS vom Jahre 2006 ist, macht insgesamt 9 Jahre unterschied. Das sich dort einiges verändert ist nur logisch. Allerdings wollte ich jetzt fragen wie ich diesen alten Code mit teilweise alten Komponenten so anpassen kann, das es auch unter dem BDS 2006 lauffähig sein wird.

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 ;)

grenzgaenger 14. Jan 2008 22:02

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...

ThYpHoOn 14. Jan 2008 22:20

Re: Altes Delphi/Pascal im neuen BDS....
 
Delphi-Quellcode:
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;
Das wäre jetzt der Code-Ausschnitt für die SetWindowExt, etc.

Und hier der Code-Ausschnitt wo er System-Infos haben möchte:
Delphi-Quellcode:
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
{....}
Beide sind in einer jeweiligen Unit.

Den kompletten Source-Code kann man sich übrigens auf http://diuf.unifr.ch/softeng/student...t/ftp-nsd.html besorgen, falls man die komplette Übersicht haben möchte.

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

malo 14. Jan 2008 22:27

Re: Altes Delphi/Pascal im neuen BDS....
 
Welche Fehler tauchen denn auf?

RavenIV 7. Feb 2008 10:48

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.

Rain 8. Dez 2008 23:43

Re: Altes Delphi/Pascal im neuen BDS....
 
Zitat:

"SetWindowExt"
"SetViewportExt"
"SetViewPortOrg"
Dafür gibt es in neueren Versionen die Funktionen "SetWindowExtEx", "SetViewportExtEx" und "SetViewPortOrgEx". Die benötigen noch einen vierten Parameter, den kann man auf NIL setzen.

Michael Habbe 9. Dez 2008 00:10

Re: Altes Delphi/Pascal im neuen BDS....
 
Zitat:

Zitat von RavenIV
Wie weit ist denn das Projekt fortgeschritten?

Das Ding von 1996 ist ja recht nett, aber nicht mehr zeitgemäss.


Um die Frage an den TE mal wieder aufzufrischen: Wie weit ist er denn?

ThYpHoOn 11. Dez 2008 15:49

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 05:38 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