---
title: "Komma år procedurer i inkluderad fil"
type: "forum-thread"
url: "https://www.webforum.nu/amne/programmering/51774-komma-år-procedurer-i-inkluderad-fil"
topic: "Programmering"
topic_url: "https://www.webforum.nu/amne/programmering"
author: "Alpha II"
published: "2002-08-30T17:33:55.000Z"
updated: "2002-08-31T16:40:36.000Z"
replies: 6
views: 223
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/programmering/51774-komma-år-procedurer-i-inkluderad-fil"
---

# Komma år procedurer i inkluderad fil

## #1 — Alpha II, 2002-08-30T17:33Z

Jag inkluderar filen fonts så här:

```
uses
  Windows,
  Messages,
  Classes,
  SysUtils,
  OpenGL,
  glAux,
  [b]Font in 'Font.pas',[/b]
  ASCLoader in 'ASCLoader.pas';
```

Men när jag anropar procedurer i Font.pas säger kompilatorn att de inte existerar, vad är fel???

Permalänk: https://www.webforum.nu/p/51774

## #2 — agneta_rung, 2002-08-30T19:47Z

Har du lagt till Font under uses i den unit där du anropar procedurerna? Koden ovan ser ut att vara från dpr-filen... Är det där du anropar procedurerna? Ligger i så fall font.pas i samma bibliotek som projektet?

Permalänk: https://www.webforum.nu/p/769093

## #3 — Alpha II, 2002-08-30T20:47Z

Ja jag anropar procedurerna ifrån dpr filen.
Vad menar du med det där om bibliotek?

Permalänk: https://www.webforum.nu/p/769121

## #4 — agneta_rung, 2002-08-31T15:18Z

Om du skriver Font in 'Font.pas' måste filen Font.pas ligga i samma bibliotek på disken som dpr-filen. Om den inte gör det kan du antingen ange hela sökvägen till filen under uses, t ex **Font in 'C:\\MittDelphiProjekt\\Font.pas'** eller ta bort sökvägen helt och hållet, dvs bara skriva Font under uses. I det senare fallet måste sökvägen till stället där filen ligger finnas med antingen i Library path i Environment options eller i Search path i Project options för att kompilatorn ska hitta den.

Vad får du för felmeddelande? 

Om kompilatorn inte hittar filen Font.pas borde den säga **File not found: 'Font.dcu'**.

Om kompilatorn säger **Undeclared identifier: 'MinProcedur'** så tyder det på att du inte deklarerat proceduren under interface-delen i Font.pas.

Permalänk: https://www.webforum.nu/p/769411

## #5 — Alpha II, 2002-08-31T16:16Z

Så här ser Font.pas ut:

```
unit Font;

interface

uses
  Windows,
  OpenGL,
  glAux;

var
  Base: GLuint;
  Texture: array[0..2] of GLuint;

implementation

procedure glGenTextures(n: GLsizei; var textures: GLuint); stdcall; external opengl32;
procedure glBindTexture(target: GLenum; texture: GLuint); stdcall; external opengl32;

procedure LoadFont;
var
  TextureImage: PTAUX_RGBImageRec;
begin
  TextureImage := auxDIBImageLoadA('Font.bmp');
  if not Assigned(TextureImage) then
    Halt(1);

  glGenTextures(1, texture[0]);
  glBindTexture(GL_TEXTURE_2D, texture[0]);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage^.sizeX, TextureImage^.sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage^.data);

  FreeMem(TextureImage^.data);
  FreeMem(TextureImage);
end;

procedure BuildFont;
var
  Loop: GLuint;
  cx: double;
  cy: double;
begin
  Base := glGenLists(256);
  glBindTexture(GL_TEXTURE_2D, Texture[0]);
  for loop := 0 to 255 do begin
    cx := (loop mod 16)/16.0;
    cy := (loop / 16)/16.0;

    glNewList(base+loop, GL_COMPILE);
      glBegin(GL_QUADS);
        glTexCoord2f(cx,1-cy-0.0625);
        glVertex2i(0,0);
        glTexCoord2f(cx+0.0625,1-cy-0.0625);
        glVertex2i(16,0);
        glTexCoord2f(cx+0.0625,1-cy);
        glVertex2i(16,16);
        glTexCoord2f(cx,1-cy);
        glVertex2i(0,16);
      glEnd();

      glTranslated(10,0,0);
    glEndList();
  end;
end;

procedure KillFont;
begin
  glDeleteLists(base,256);
end;

procedure glText(x, y: GLint; S: String);
var
  i: Integer;
begin
  glBindTexture(GL_TEXTURE_2D, Texture[0]);
  glDisable(GL_DEPTH_TEST);
  glMatrixMode(GL_PROJECTION);
  glPushMatrix;
  glLoadIdentity();
  glOrtho(0,640,0,480,-1,-1);
  glMatrixMode(GL_MODELVIEW);
  glPushMatrix();
  glLoadIdentity();
  
  glTranslated(x,y,0);
  glListBase(base-32+128);
  for i := 0 to Length(S)-1 do
    glCallLists(Ord(S[i]), GL_BYTE, @S);

  glMatrixMode(GL_PROJECTION);
  glPopMatrix();
  glMatrixMode(GL_MODELVIEW);
  glPopMatrix();
  glEnable(GL_DEPTH_TEST);
end;

end.
```

Permalänk: https://www.webforum.nu/p/769463

## #6 — Alpha II, 2002-08-31T16:19Z

...och font.pas ligger i samma mapp

Permalänk: https://www.webforum.nu/p/769464

## #7 — agneta_rung, 2002-08-31T16:40Z

Om du exempelvis vill anropa LoadFont från din dpr-fil måste du lägga upp procedur-deklarationen i interface delen. Det är bara den som "syns utifrån". Så här alltså:

```
unit Font;

interface

uses
  Windows,
  OpenGL,
  glAux;

[RED]procedure LoadFont;[/RED]

var
  Base: GLuint;
  Texture: array[0..2] of GLuint;

implementation

procedure glGenTextures(n: GLsizei; var textures: GLuint); stdcall; external opengl32;
procedure glBindTexture(target: GLenum; texture: GLuint); stdcall; external opengl32;

procedure LoadFont;
var
  TextureImage: PTAUX_RGBImageRec;
begin
  TextureImage := auxDIBImageLoadA('Font.bmp');
  if not Assigned(TextureImage) then
    Halt(1);

  glGenTextures(1, texture[0]);
  glBindTexture(GL_TEXTURE_2D, texture[0]);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage^.sizeX, TextureImage^.sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage^.data);

  FreeMem(TextureImage^.data);
  FreeMem(TextureImage);
end;

procedure BuildFont;
var
  Loop: GLuint;
  cx: double;
  cy: double;
begin
  Base := glGenLists(256);
  glBindTexture(GL_TEXTURE_2D, Texture[0]);
  for loop := 0 to 255 do begin
    cx := (loop mod 16)/16.0;
    cy := (loop / 16)/16.0;

    glNewList(base+loop, GL_COMPILE);
      glBegin(GL_QUADS);
        glTexCoord2f(cx,1-cy-0.0625);
        glVertex2i(0,0);
        glTexCoord2f(cx+0.0625,1-cy-0.0625);
        glVertex2i(16,0);
        glTexCoord2f(cx+0.0625,1-cy);
        glVertex2i(16,16);
        glTexCoord2f(cx,1-cy);
        glVertex2i(0,16);
      glEnd();

      glTranslated(10,0,0);
    glEndList();
  end;
end;

procedure KillFont;
begin
  glDeleteLists(base,256);
end;

procedure glText(x, y: GLint; S: String);
var
  i: Integer;
begin
  glBindTexture(GL_TEXTURE_2D, Texture[0]);
  glDisable(GL_DEPTH_TEST);
  glMatrixMode(GL_PROJECTION);
  glPushMatrix;
  glLoadIdentity();
  glOrtho(0,640,0,480,-1,-1);
  glMatrixMode(GL_MODELVIEW);
  glPushMatrix();
  glLoadIdentity();
  
  glTranslated(x,y,0);
  glListBase(base-32+128);
  for i := 0 to Length(S)-1 do
    glCallLists(Ord(S[i]), GL_BYTE, @S);

  glMatrixMode(GL_PROJECTION);
  glPopMatrix();
  glMatrixMode(GL_MODELVIEW);
  glPopMatrix();
  glEnable(GL_DEPTH_TEST);
end;

end.
```

Permalänk: https://www.webforum.nu/p/769476

---

Tråden på webben: https://www.webforum.nu/amne/programmering/51774-komma-år-procedurer-i-inkluderad-fil
