Difference between revisions of "Lazarus DB Faq/sk"

From Free Pascal wiki
Jump to navigationJump to search
(príprava na preklad)
 
Line 1: Line 1:
{{Lazarus Faq}}
+
{{Lazarus DB Faq}}
  
Tento FAQ bol zkopírovaný z FAQ na adrese www.freepascal.org, je jednoduchšie sa oň starať a rozširovať ho, keď je vo wiki formáte.
+
== General ==
  
== Všeobecné otázky ==
+
This FAQ will be directed to database programming with Lazarus.
  
=== Kde môžem nájsť viacero FAQ? ===
+
=== Where can I find more FAQ? ===
  
Pozrite sa na [http://www.lazarus.freepascal.org oficiálnu stránku]. Nájdete tam ďalší FAQ.
+
See the official website www.lazarus.freepascal.org. There is another FAQ as well. [[Lazarus Faq|Here]] you will find a page that once started as a copy of the FAQ from www.lazarus.freepascal.org .
  
===Prečo sú generované binárky také veľké?===
+
=== Where can I find database components? ===
The binaries are big because they include a lot of debug information necessary for using gdb (GNU Debugger).
 
  
The compiler has an option to remove the debug information from the executable (-Xs), but due to a bug in the compiler (version 2.0.2 and earlier), this doesn't work correctly. It has been fixed in the development version of the compiler.
+
At the moment the SQLdb components are part of the Lazarus package, you only need to install them. If you look in the [$LazarusDir]/components you will see a subdirectory SQLdb. Install the sqldblaz.lpk and you will be able to connect to MySQL, Interbase / Firebird and Postgres servers.
 +
Look [[Install Packages|here]] for help on installing packages.
  
You can use a program called "strip" to remove the debug symbols from the executable file. It is located under lazarus dir lazarus\pp\bin\i386-win32\.
+
=== Are there other components? ===
  
Just type "strip --strip-all <your executable file with path>" on the command line.
+
Yes. The [http://zeoslib.sourceforge.net/index.php ZEOS components] have been ported to Lazarus as well.
 +
<br>You have to download ZEOSDBO_Rework from [http://sourceforge.net/cvs/?group_id=35994 ZEOS cvs].
 +
<br>See also this tutorial for [[Zeos_tutorial|Zeos]].
 +
<br>[https://trac.synsport.com:8000/index.php/pdo/wiki Pascal Data Objects] works equally with Delphi and FPC 2.0
  
If you want to make your program even smaller, you should try [http://upx.sourceforge.net/ UPX] too. UPX is a very good exe compressor. It includes no memory overhead due to in-place decompression. It also has a very fast decompression (~10 MB/sec on an Pentium 133).
+
== IB / FB ==
  
To use upx just type "upx <your executable file with path>" on the command line.
+
=== How do I connect from Linux to a Windows server ===
 +
Entering the correct path to a database on a Windows server from a Linux client is not very clear.  
  
after using both strip and upx a simple GUI Lazarus program gets:
+
Say you have installed firebird in F:\Program Files\firebird\. The employee.fdb example database will then be installed in the directory F:\Program Files\firebird\examples\ . The IP-adress of your computer is 192.168.2.100.
* ~ 700kb on Linux
 
* ~ 420kb on Windows
 
  
A more detailed answer is given on [[fpc:Size Matters]].
+
Then entering the following databasename 
 +
192.168.2.100:F:\Program Files\firebird\examples\employee.fdb
 +
in your IBConnection will connect to the required database.
  
=== Why is the linking so slow on Windows? ===
+
Note that you don't have to enter a value for the hostname property!
  
Generally speaking, compilation on Windows takes more time then other platforms because the GNU Linker utilized by Free Pascal is slow on this platform.
+
== MySQL ==
  
Also, as a test, Lazarus 0.9.12 was released with Smartlinked LCL. This means that executables are now about 30% smaller after strip and upx when compared to previous releases. This also means that the linking is much more complicated now and other GNU Linker problems appeared. A study about this is located here: [[File size and smartlinking]]
+
=== Which version of mySQL is supported? ===
  
This problem only affects Windows, and is only bad on relatively old computers (less then 1Ghz) and computers with little RAM (128MB or less).
+
Currently MySQL 4.0, MySQL 4.1 and MySQL 5.0 are supported by de SQLdb components. Make sure you are using the correct connection component for your client library version. So if you have the client libraries installed for MySQL 4.1 then you have to use TMySQL41Connection component, even if the server is running version 4.0 or 5.0.
  
A internal linker is being developed. It should solve this, but will still take some time to be ready.
+
==== Pascal Data Objects ====
 +
There is now an alternative. The functions introduced with MySQL 4.1 and 5.0 like prepared statements, binding, and stored procedures are supported by database API called Pascal Data Objects, which is inspired by PHP Data Objects.  All the code and documentation necessary to use this new API is available on a Trac wiki:
  
But how to solve this in the mean time? You have two options:
+
https://trac.synsport.com:8000/index.php/pdo/wiki (username/password is guest/guest)
# Turn of smart linking. Unfortunately Lazarus unchecking the checkbox in Project -> Compiler Options -> Linking tab, is not enough. You must also add "-XS" to the custom options on the Other tab. If you compile your application, it will not use smartlinking.
 
# Just recompile your LCL. Open Lazarus. Go on the menu "Tools" -> "Configure Build Lazarus". Set LCL to clean+build and everything else to None and click "Ok". Now go on "Tools" -> "Build Lazarus". Now your LCL is no longer smartlinked and the compilation should be much faster, but your exes will be bigger too.
 
  
=== Do I need ppc386.cfg or fpc.cfg? ===
+
== PostgreSQL ==
  
You only need fpc.cfg. This way the compiler knows where to find the libraries.
+
You can connect to PostgreSQL db by TPQConnection component. This component uses the PostgreSQL's libpq connection library[http://www.postgresql.org/docs/8.0/interactive/libpq.html], so you can easily connect almost every PostgreSQL db, but the component doesn't support the following connection options:
 +
* Port
 +
* ClientEncoding
 +
Maybe there are other unsupported connection parameters.
  
=== How do I compile lazarus? ===
+
--[[User:Jrmarino|Jrmarino]] 11:28, 13 Mar 2006 (CET)
 
 
Do something like this:
 
$ cd lazarus
 
$ make clean all
 
 
 
=== How do I build other projects based upon the LCL ===
 
 
 
If you can't use the IDE to build your applications, add the following lines to the end of your fpc.cfg
 
 
 
# Add Lazarus libs
 
  -Fu/your.lazarus.root/lcl/units
 
  -Fu/your.lazarus.root/lcl/units/{YourToolKit}
 
  -Fu/your.lazarus.root/components/units
 
  -Fu/your.lazarus.root/components/units/{YourToolKit}
 
 
 
:Where {YourToolKit} may be GTK, Gnome or Win32 and run:
 
::ppc386 your.project.pp
 
 
 
=== What version of FPC is required? ===
 
 
 
FPC Version 2.0.2 has been released, and that is the recommended version. You can also use the svn version of fpc 2.0.3 and 2.1.x.
 
 
 
=== I can't compile Lazarus ===
 
 
 
# Check if the compiler has the correct version
 
# Check if the (fpc)libraries are from the same version.
 
# Check if you have a fpc.cfg and no old ppc386.cfg
 
# Check also the OS-dependent FAQs
 
 
 
=== When I try to compile a project, I have an error ===
 
==== "Cannot find Unit interfaces". How can I solve this?====
 
This compiled unit can be found in {LazarusDir}\lcl\units\{TargetCPU}-{TargetOS}\{LCLWidgetSet}\interfaces.ppu.
 
 
 
Make sure, it is only there. If you have multiple versions of interfaces.ppu, then you have probably have a wrong configuration (for instance you added a lcl directory to a search path). Remove all interfaces.ppu, but the one in the directory above.
 
 
 
If you selected a different widgetset than you used to build lazarus, you need to build the LCL for this widgetset.
 
 
 
If it is there, but you get this error, you are using a different compiler / rtl for compiling your project than you used for compiling your Lazarus IDE. You can do one of the following
 
* Rebuild the LCL (or Lazarus completely) with the compiler selected in the Environmnent Options. You can this with Tools -> Build Lazarus. Before doing this, check the current settings in Tools -> Configure Build Lazarus.
 
* Change the compiler in the Environment Options to the one you used to compile Lazarus. Look carefully also in the Environment Options to see if you are using the correct paths for the Lazarus Directory and the FPC sources directory. Check that there is only one version of the compiler configuration file fpc.cfg - it should reside in /etc/ for Linux/Unix systems or in the same directory as the fpc compiler for Windows systems. Rogue copies often creep in if you have updated your compiler to a new version; they may be found in your home directory or in the same directory as the one in which you built your new compiler.  DELETE THESE!!
 
 
 
=== When I try to compile delphi projects under lazarus, I have an error ===
 
==== at the line :{$R *.DFM} How can I solve this problem ? ====
 
 
 
Lazarus (or better Linux) doesn't know about resources, so you can't use them in the way Delphi/win32 does. However Lazarus uses a method pretty compatible with this. You can still use your Delphi layouts (.dfm files) if you use the following steps:
 
 
 
*You need a textual version of the .dfm files. D5 and higher are doing this as default. If you have older files: ALT-F12 to see the layout as text and paste/copy. When you have a text .dfm file, just copy it to a .lfm file.
 
*Create a file with lazres (in lazarus/tools) lazres yourform.lrs yourform.lfm
 
*Add the following initialization section to
 
 
 
      initialization
 
      {$I yourform.lrs}
 
 
 
Please keep in mind that not all properties in the dfm are supported yet by
 
lazarus, so you might get a crash.
 
 
 
==== 'Identifier not found LazarusResources'. ====
 
 
 
When creating a form Lazarus automaticaly add some extra units to the uses section of your form unit. During the conversion of a delphi unit to a Lazarus unit this does not happen. So you need to add LResources to the Uses section of your form unit.
 
 
 
=== When accessing events of objects e.g. the onclick event of a button I get the following error. ERROR unit not found: stdCtrls ===
 
 
 
Make sure, in the Project -> Project Inspector, that your project depends on the package 'LCL' and that you have installed the FPC sources.
 
 
 
Lazarus is the IDE and the visual components library LCL.
 
All other stuff, like IO, Database, FCL and RTL are provided by FPC.
 
The IDE needs the paths to all sources.
 
 
 
The FPC source path can be set via:
 
Environment -> General Options -> Files -> FPC source path
 
 
 
===How to embed a small file in the executable, without the need of a separate file? How to embed a resource?===
 
 
 
For example:
 
/your/lazarus/path/tools/lazres sound.lrs sound1.wav sound2.wav ...
 
will create sound.lrs from sound1.wav and sound2.wav.
 
 
 
Then include it *behind* the form lrs file:
 
 
 
...
 
initialization
 
{$i unit1.lrs} // this is main resource file (first)
 
{$i sound.lrs} // user defined resource file
 
 
end.
 
In your program you can then use:
 
Sound1AsString:=LazarusResources.Find('sound1').Value;
 
 
 
=== How can I see debug output? ===
 
 
 
The LCL has in the LCLProc procedure to write debug output:
 
* '''DebugLn:''' works about the same as WriteLn, but accepts only strings.
 
* '''DbgOut:''' works about the same as Write, but accepts only strings.
 
 
 
In normal circumstances the output is written to stdout. If stdout is closed, (for example when the application is {$AppType Gui} or compiled with -WG on windows), no output is written.
 
 
 
Debug output can also be written to file. The LCLProc unit checks in its initialization the command line parameters for '--debug-log=<file>'. If it finds it sends debug output to <file>.
 
 
 
If it doesn't find a --debug-log command line parameter, it looks if an environment variable xxx_debuglog exists, where xxx is the program file name without extension. For lazarus this would be lazarus_debuglog. If
 
such an environment variable exists, it uses that as file to write debug output to. Example: if you do:
 
set lazarus_debuglog=c:\lazarus\debug.txt
 
debug output will be written to c:\lazarus\debug.txt.
 
 
 
Since this is implemented in lclproc, every application using lclproc, can use this output facility.
 
 
 
;Debuging Lazarus : Most usefull for windows: If you want output on a console, add {$APPTYPE console} to lazarus.pp ; Then rebuild Lazarus.
 
 
 
=== What is the meaning of the various file extensions used by Lazarus? ===
 
 
 
The [[Lazarus Tutorial#The Lazarus files]] explains some extensions by an example.
 
Here is a brief list:
 
 
 
; <code>*.lpi</code> : Lazarus Project Information file (stored in XML; contains project-specific settings)
 
; <code>*.lpr</code> : Lazarus Program file; contains Pascal source of main program
 
; <code>*.lfm</code> : Lazarus Form file; contains configuration information for all objects on a form (stored in a Lazarus-specific format; the actions are described by Pascal source code in a corresponding <code>*.pas</code> file)
 
; <code>*.pas</code> or <code>*.pp</code> : Unit with Pascal code (typically for a form stored in a corresponding <code>*.lfm</code> file)
 
; <code>*.lrs</code> : Lazarus Resource file (this is a generated file; not to be confused with a Windows resource file).
 
: This file can be created with lazres tool (in directory Lazarus/Tools) using commandline: lazres myfile.lrs myfile.lfm
 
; <code>*.ppu</code> : Compiled unit
 
; <code>*.lpk</code> : Lazarus package information file. (stored in XML; contains package-specific settings)
 
 
 
=== I have fixed/improved lazarus. How can I add my changes to the official lazarus source? ===
 
Create a patch and send it to the developers. For details see [[Creating A Patch]].
 
 
 
== Where is ... defined ==
 
 
 
=== Virtual key constants ===
 
Virtual key constants are defined in LCLType. Add LCLtype to your <b>uses</b>.
 
 
 
== Using the IDE ==
 
 
 
=== How can I use "identifier completion"? ===
 
You can invoke identifier completion by pressing [ctrl][space].
 
Under the menu item ''Environment -> Editor Options -> Code Tools -> Automatic Features'' you can set how quick this should happen automatically.
 
 
 
== Linux ==
 
 
 
=== How can I debug on Linux without the IDE? ===
 
 
 
First of all you need a debugger. gdb is the standard debugger under linux and
 
there are several GUI-frontends available. One common frontend is ddd, which is
 
part of most common distributions. To compile lazarus/lcl with debug-information
 
you should then use the following commands to start a debug session:
 
 
 
  $ make clean; make OPT=-dDEBUG
 
  $ ddd lazarus
 
 
 
Be warned however, that ddd is not as comfortable as e.g. the Lazarus debugger.
 
Specially if it comes to view the contents of a variable you have to take into
 
account that ddd/gdb are case sensitive whereas Pascal is case-insensitive.
 
Therefore you have to type all variable names in uppercase to see their
 
contents. For more information take a look into the fpc-manuals.
 
 
 
=== I can debug now but ddd does not find my sources or complains that they contain no code. Whats that? ===
 
 
 
This is a path-related problem with either gdb or ddd. You can aviod this by
 
 
 
* Use the "Change directory" command from the ddd menu and choose the directory where the sources are located. The drawback of this method is that you now can't use the source of the program you started with (e.g. lazarus). Thus it may be neccessary to change the directory multiple times.
 
* In ddd goto [Edit] [gdb-settings] and set the search-path
 
* Create a $(HOME)/.gdbinit file like:
 
      directory /your/path/to/lazarus
 
      directory /your/path/to/lazarus/lcl
 
      directory /your/path/to/lazarus/lcl/include
 
 
 
=== I receive an error during the linking that states /usr/bin/ld can't find -l<some lib> ===
 
 
 
; '''Package Based Distributions''' : You need to install the package that provides the lib<somelib>.so or lib<somelib>.a files. Dynamic libs under linux have the extension .so, while static libs have the extension .a. On some Linux distro's you have installed the package (rpm, deb) <packagename> which provides <some lib>, but you also need the development package (rpm, deb), normally called <packagename>-dev, which contains the .a (static lib) and/or the .so (dynamic lib).
 
 
 
; '''Source Based Distributions and Manual Compilation (LFS)''' : Make sure that there is a lib<somelib>.a in the path, and that it contains the right version. To let the linker find the dynamic library, create a symlink called lib<some lib>.so to lib<some lib><version>-x,y.so if necessary (and/or for static lib; lib<some lib>.a to lib<some lib><version>-x,y.a).
 
 
 
; '''FreeBSD''' : As source based distro's, and also make sure you have -Fl/usr/local/lib in your fpc.cfg and/or Lazarus library path. Keep in mind that GTK1.2 has "gtk12" as package name under FreeBSD. (same for glib)
 
 
 
; '''NetBSD''' : As source based distro's, and also make sure you have -Fl/usr/pkg/lib in your fpc.cfg and/or Lazarus library path
 
 
 
=== How can I convert a kylix 2 project into a lazarus project? ===
 
 
 
Nearly the same way as converting a Kylix project into a Delphi/VCL project.
 
 
 
The LCL (Lazarus Component Library) tries to be compatible to Delphis VCL.
 
Kylix CLX tries to be QT compatible.
 
Here are some general hints:
 
 
 
* Rename all used CLX Q-units like QForms, QControls, QGraphics, ... into their VCL counterparts: Forms, Controls, Graphics, ...
 
* Add LResources to the uses section of every form source
 
* Rename or copy all .xfm files to .lfm files.
 
* Rename or copy .dpr file to .lpr file.
 
* Add "Interfaces" to the uses section in the .lpr file.
 
* Remove {$R *.res} directive
 
* Remove {$R *.xfm} directive
 
* Add {$mode objfpc}{$H+} or {$mode delphi}{$H+} directive to .pas and .lpr files
 
* Add an initialization section to the end of each form source and add an include directive for the .lrs file (lazarus resource file):
 
  initialization
 
    {$I unit1.lrs}
 
:The .lrs files can be created via the lazres tool in: (lazarusdir)/tools/lazres.
 
:For example: ./lazres unit1.lrs unit1.lfm
 
 
 
* Fix the differences. The LCL does not yet support every property of the VCL and the CLX is not fully VCL compatible.
 
 
 
=== When compiling lazarus the compiler can not find a unit. e.g.: gtkint.pp(17,16) Fatal: Can't find unit GLIB ===
 
 
 
1. Check a clean rebuild: do a 'make clean all'
 
 
 
2. Check if the compiler has the correct version (2.0.0 or higher)
 
 
 
3. Check if the compiler is using the right config file. The normal installation creates /etc/fpc.cfg. But fpc also searches for ~/.ppc386.cfg, ~/.fpc.cfg, /etc/ppc386.cfg and it uses only the first it finds.
 
 
 
:'''Hint:''' You can see which config file is used with 'ppc386 -vt bogus'
 
:Remove any ppc386.cfg as it is really obsolete.
 
 
 
4. Check if the config file (/etc/fpc.cfg) contains the right paths to your fpc libs. There must be three lines like this:
 
    -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget
 
    -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl
 
    -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*
 
:The first part of these paths (/usr/lib/fpc) depends on your system. On some systems this can be for example /usr/local/lib/fpc/... .
 
:'''Hint:''' You can see your searchpaths with 'ppc386 -vt bogus'
 
 
 
5. Check that the config file (/etc/fpc.cfg) does not contain search paths to the lcl source files (.pp, .pas):
 
  forbidden: -Fu(lazarus_source_directory)/lcl
 
  forbidden: -Fu(lazarus_source_directory)/lcl/interfaces/gtk
 
:If you want to add the lcl for all your fpc projects, make sure that the two paths look like the following and are placed after the above fpc lib paths:
 
  -Fu(lazarus_source_directory)/lcl/units/$fpctarget
 
  -Fu(lazarus_source_directory)/lcl/units/$fpctarget/gtk
 
 
 
6. Check if the missing unit (glib.ppu) exists in your fpc lib directory. For example the gtk.ppu can be found in /usr/lib/fpc/$version/units/i386-linux/gtk/. If it does not exists, the fpc lib is corrupt and should be reinstalled.
 
 
 
7. Check if the sources are in a NFS mounted directory. In some cases the NFS updates created files incorrectly. Please, try to move the sources into a non NFS directory and compile there.
 
 
 
=== I have installed the binary version, but when compiling a simple project, lazarus gives: Fatal: Can't find unit CONTROLS ===
 
 
 
Probably you are using a newer fpc package, than that used for building the
 
lazarus binaries. The best solution is to download the sources and compile
 
lazarus manually. You can download the source snapshot or get the source
 
via svn:
 
 
 
  $ bash
 
  $ svn checkout http://svn.freepascal.org/svn/lazarus/trunk lazarus
 
  $ cd lazarus
 
  $ make clean all
 
 
 
Make sure that lazarus get the new source directory:
 
Environment->General Options->Files->Lazarus Directory Top
 
 
 
===Lazarus compiles, but linking fails with: libgdk-pixbuf not found===
 
Either install the gdk-pixbuf library for gtk1.x or disable the use:
 
 
 
Where to find the gdk-pixbuf library:
 
 
 
RPMs:
 
http://rpmfind.net/linux/rpm2html/search.php?query=gdk-pixbuf&submit=Search+...&system=&arch=
 
 
 
Debian packages:
 
libgdk-pixbuf-dev
 
 
 
Sources:
 
ftp://ftp.gnome.org/pub/gnome/unstable/sources/gdk-pixbuf/
 
 
 
 
 
How to disable the use in lazarus: In Tools->Configure "Build Lazarus" add the option
 
'-dNoGdkPixBufLib'
 
or at command line:
 
"make clean all OPT=-dNoGdkPixBufLib".
 
 
 
===I have SuSE and I get /usr/bin/ld: cannot find -lgtk Error: Error while linking===
 
SuSE installs the gtk devel libs under /opt/gnome/lib (or /opt/gnome/lib64 for 64 bits), which is not in
 
the standard lib path. Simply add it to your /etc/fpc.cfg.
 
(-Fl/opt/gnome/lib).
 
 
 
===Lazarus crashes with runtime error 211 after I installed a component===
 
After I installed a component, Lazarus crashes with the following message:
 
Threading has been used before cthreads was initialized.
 
Make cthreads one of the first units in your uses clause.
 
Runtime error 211 at $0066E188
 
How can I fix this?
 
 
 
Your freshly installed component is using threads. Fpc on *nix doesn't automatically include threading support, but it must be intialized. This initialization is done in the cthreads unit. Every application using the component needs to add this unit to the uses clause of the main program. Lazarus itself is no exception. This can be done in two ways:
 
 
 
1) Change the source of ide/lazarus.pp: add the cthreads as first unit to the uses clause, so that is looks like this:
 
uses
 
  //cmem,
 
  cthreads,
 
  {$IFDEF IDE_MEM_CHECK}
 
...
 
and rebuild lazarus.
 
 
 
2) In order to avoid modifying lazarus.pp file, a fpc compiler option could be used. Once package that uses threads has been compiled, open menu Tools->Configure "build Lazarus". Configure "build Lazarus" dialog will be shown, in field "Options:" type -Facthreads and then press "OK" button. The next step is to install the package. Lazarus will be built with option -Facthreads which means that it will treat main program as if unit cthreads where first in uses clause.
 
 
 
''Hint:'' Maybe your old (non-crashing) lazarus executable is stored as lazarus.old in the same directory as the crashing lazarus executable.
 
 
 
===When I run a program with threads I get runtime error 232===
 
The complete error message is:
 
This binary has no thread support compiled in.
 
Recompile the application with a thread-driver in the program uses
 
clause before other units using thread.
 
Runtime error 232
 
'''Solution''': Add cthreads as first unit to the uses clause of your main program, usually the .lpr-file.
 
 
 
===I have Ubuntu Breezy and my fonts in Lazarus IDE look too big===
 
If Lazarus is compiled with Gtk1.2, the settings in Gnome Preferences/Font don't have any effect as
 
they are related to Gtk2.
 
You could try this solution:
 
Create a file named .gtkrc.mine in your home directory (if it's not already there) and add
 
these lines to it:
 
 
 
<pre>
 
style "default-text" {
 
      fontset = "-*-arial-medium-r-normal--*-100-*-*-*-*-iso8859-1,\
 
                  -*-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
 
}
 
 
 
class "GtkWidget" style "default-text"
 
</pre>
 
 
 
===How can I compile a program for Gtk2?===
 
 
 
At the moment, the Gtk2 compiled IDE is a little unstable, but you can compile software for Gtk2 using the Gtk1 IDE.
 
 
 
To start with recompile LCL for Gtk2. Go to the menu "Tools"->"Configure Build Lazarus" and set LCL to clean+build and everything else to none.
 
 
 
Now click Ok and go to the menu "Tools"->"Build Lazarus"
 
 
 
Now you can compile your software with Gtk2 going on the Compiler options and changing the widgetset to Gtk2.
 
 
 
== Windows ==
 
 
 
=== When I cycle the compiler, I get:The name specified is not recognized as an internal or external command, operable program or batch file.>& was unexpected at this time. ===
 
 
 
In the compiler dir exists an OS2 scriptfile named make.cmd. NT sees this also
 
as a script file, so remove it since on NT we don't need it.
 
 
 
=== When I cycle the compiler, I get: make[3]: ./ppc1.exe: Command not found ===
 
 
 
I don't know why but somehow make has lost its path. Try to cycle with a
 
basedir set like: make cycle BASEDIR=your_fpc_source_dir_herecompiler
 
 
 
=== When I try to make Lazarus I get:===
 
====make.exe: * * * interfaces: No such file or directory (ENOENT). Stop.make.exe: * * * [interfaces_all] Error 2 ====
 
You need to upgrade your make.
 
 
 
====makefile:27: *** You need the GNU utils package to use this Makefile.  Stop.====
 
Make sure you didn't install FPC in a path with spaces in the name. The
 
Makefile doesn't support it.
 
 
 
 
 
 
 
===How can I give my program an XP look like lazarus has?===
 
If you have a myprogram.exe then create a file which called myprogram.exe.manifest and copy-paste
 
this to the file:
 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 
<assemblyIdentity processorArchitecture="*" version="1.0.0.0" type="win32" name="myprogram"/>
 
<description>programom</description>
 
<dependency>
 
  <dependentAssembly>
 
    <assemblyIdentity
 
      type="win32"
 
      name="Microsoft.Windows.Common-Controls"
 
      version="6.0.0.0"
 
      publicKeyToken="6595b64144ccf1df"
 
      language="*"
 
      processorArchitecture="*" />
 
  </dependentAssembly>
 
  </dependency>
 
</assembly>
 
Voila! XP looks.
 
 
 
===When I run Windows program created in Lazarus it starts with a DOS window===
 
Specify the -WG argument (Windows GUI) on the command line of the compiler or in the Lazarus IDE check the Windows GUI check box on the compiler options dialog box (Project menu -> Compiler Options -> Linking -> target OS Specific options.
 
 
 
 
 
== Contributors and Comments ==
 
 
 
This page has been converted from the epikwiki [http://lazarus-ccr.sourceforge.net/index.php?wiki=LazarusFaq version].
 

Revision as of 22:44, 29 April 2006

Deutsch (de) English (en) español (es) français (fr) italiano (it) 日本語 (ja) português (pt) русский (ru) slovenčina (sk) 中文(中国大陆)‎ (zh_CN)

General

This FAQ will be directed to database programming with Lazarus.

Where can I find more FAQ?

See the official website www.lazarus.freepascal.org. There is another FAQ as well. Here you will find a page that once started as a copy of the FAQ from www.lazarus.freepascal.org .

Where can I find database components?

At the moment the SQLdb components are part of the Lazarus package, you only need to install them. If you look in the [$LazarusDir]/components you will see a subdirectory SQLdb. Install the sqldblaz.lpk and you will be able to connect to MySQL, Interbase / Firebird and Postgres servers. Look here for help on installing packages.

Are there other components?

Yes. The ZEOS components have been ported to Lazarus as well.
You have to download ZEOSDBO_Rework from ZEOS cvs.
See also this tutorial for Zeos.
Pascal Data Objects works equally with Delphi and FPC 2.0

IB / FB

How do I connect from Linux to a Windows server

Entering the correct path to a database on a Windows server from a Linux client is not very clear.

Say you have installed firebird in F:\Program Files\firebird\. The employee.fdb example database will then be installed in the directory F:\Program Files\firebird\examples\ . The IP-adress of your computer is 192.168.2.100.

Then entering the following databasename

192.168.2.100:F:\Program Files\firebird\examples\employee.fdb

in your IBConnection will connect to the required database.

Note that you don't have to enter a value for the hostname property!

MySQL

Which version of mySQL is supported?

Currently MySQL 4.0, MySQL 4.1 and MySQL 5.0 are supported by de SQLdb components. Make sure you are using the correct connection component for your client library version. So if you have the client libraries installed for MySQL 4.1 then you have to use TMySQL41Connection component, even if the server is running version 4.0 or 5.0.

Pascal Data Objects

There is now an alternative. The functions introduced with MySQL 4.1 and 5.0 like prepared statements, binding, and stored procedures are supported by database API called Pascal Data Objects, which is inspired by PHP Data Objects. All the code and documentation necessary to use this new API is available on a Trac wiki:

https://trac.synsport.com:8000/index.php/pdo/wiki (username/password is guest/guest)

PostgreSQL

You can connect to PostgreSQL db by TPQConnection component. This component uses the PostgreSQL's libpq connection library[1], so you can easily connect almost every PostgreSQL db, but the component doesn't support the following connection options:

  • Port
  • ClientEncoding

Maybe there are other unsupported connection parameters.

--Jrmarino 11:28, 13 Mar 2006 (CET)