Just nu i M3-nätverket
Gå till innehåll

Hjälp?


Arcainew

Rekommendera Poster

Behöver jag hjälp?

 

Med tanke på att jag aldrig programerat förr så kanske lite "hjälp" sitta fint.

 

http://www.idg.se/pcforalla/skolor/delphi3.htm står koden:

 

procedure

TForm1.Skrivut1Click(Sender: TObject);

var

Rad: Integer;

Texten: TextFile;

begin

try

AssignPrn(Texten);

Rewrite(Texten);

Printer.Canvas.Font:=Memo1.Font;

for Rad := 0 to Memo1.Lines.Count -1 do

 

WriteLn(Texten, Memo1.Lines[Rad]);

System.Close(Texten);

except

ShowMessage ('Kan inte skriva ut! Är skrivaren installerad rätt?');

end;

end;

 

...koden ska tydligen få ditt program att skicka info till skrivare som sedan ska skriva ut.

 

Anledningen till att jag behöver hjälp är att programmet hänger sig när jag kör det (F9) vid raden:

 

AssignPrn(Texten);

 

Varför?

 

Tack

 

-Arc

 

arcainew@hotmail.com

Länk till kommentar
Dela på andra webbplatser

Har du lagt till Printers i uses.

 

Nästan högst upp i din unit ska det stå ungefär så här:

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Printers;

 

Det viktiga för dig är att det står Printers.

Länk till kommentar
Dela på andra webbplatser

Tack så mycket JS, det var hyggligt. Men nu uppstår ett annat problem - nämligen en dialogruta som säger:

 

"Error in module unit1: Call to RegisterClasses is missing or incorrect"

 

...när jag försöker köra programmet.

 

Tack

 

-Arc

Länk till kommentar
Dela på andra webbplatser

Om du använder delphi 1 kan det bero på att du av misstag tagit bort sista raden i din unit.

 

Det ska stå "end." som sista rad i unit1.

Länk till kommentar
Dela på andra webbplatser

Tack igen JS!

 

Jag allra hjärtligast för din hjälp, men...

 

Jag hoppas inte jag är alltför jobbig denna gång.

 

När jag använder:

 

end;

 

end.

 

i slutet får jag meddelandet som ser ut något i denna stil:

 

"Error 85 ";" is expected"

 

När jag använder mig av:

 

end;

 

end;

 

Uppstår det tidigare problemet.

 

Hela koden ser ut så här:

 

unit Unit1;

 

interface

 

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,

Forms, Dialogs, Menus, StdCtrls, Printers;

 

type

TForm1 = class(TForm)

Memo1: TMemo;

MainMenu1: TMainMenu;

Arkiv: TMenuItem;

ppna1: TMenuItem;

Spara1: TMenuItem;

Avsluta1: TMenuItem;

Avsluta2: TMenuItem;

SaveDialog1: TSaveDialog;

OpenDialog1: TOpenDialog;

N1: TMenuItem;

Skrivut1: TMenuItem;

procedure ppna1Click(Sender: TObject);

procedure Spara1Click(Sender: TObject);

procedure Avsluta2Click(Sender: TObject);

procedure Skrivut1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.DFM}

 

procedure TForm1.ppna1Click(Sender: TObject);

begin

if OpenDialog1.Execute = true then

memo1.Lines.LoadFromFile (OpenDialog1.FileName);

end;

 

procedure TForm1.Spara1Click(Sender: TObject);

begin

if SaveDialog1.Execute = True then

Memo1.Lines.SaveToFile (SaveDialog1.FileName);

end;

 

procedure TForm1.Avsluta2Click(Sender: TObject);

begin

Close

end;

 

procedure TForm1.Skrivut1Click(Sender: TObject);

var

Rad: Integer;

Texten: TextFile;

begin

try

AssignPrn(Texten);

Rewrite(Texten);

Printer.Canvas.Font:=Memo1.Font;

for Rad := 0 to Memo1.Lines.Count -1 do

WriteLn(Texten, Memo1.Lines[Rad]);

System.Close(Texten);

except

ShowMessage ('Kan inte skriva ut! Är skrivaren installerad rätt?');

 

end;

 

end.

 

Jag skulle uppskatta din hjälp igen.

 

Tack ska du ha

 

-Arc

Länk till kommentar
Dela på andra webbplatser

Felet är antagligen i proceduren Skrivut1Click.

det fattas ett "end;".

Du ska ha ett "end;" för procedure avslut och ett som avslutar try except blocket.

 

procedure TForm1.Skrivut1Click(Sender: TObject);

var

Rad: Integer;

Texten: TextFile;

begin

try

AssignPrn(Texten);

Rewrite(Texten);

Printer.Canvas.Font:=Memo1.Font;

for Rad := 0 to Memo1.Lines.Count -1 do

WriteLn(Texten, Memo1.Lines[Rad]);

System.Close(Texten);

except

ShowMessage ('Kan inte skriva ut! Är skrivaren installerad rätt?');

end;

end;

 

end.

En delphi unit ska alltid avslutas med "end." men det lägger delphi till själv, så tar man inte bort detta ska man inte få några problem ;-).

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...