String-Resource unter Lazarus?

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Pegasus0211
Beiträge: 28
Registriert: Mo 18. Sep 2006, 07:48
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Scheeßel

String-Resource unter Lazarus?

Beitrag von Pegasus0211 »

Guten Tag,

wir haben ein Programm erstellt, welches diverse SQL-Befehle aus einer ASCCI-Datei abarbeitet (PostgreSQL-Datenbankerzeugung, Füllung mit Standardwerten usw.). Die ASCCI-Datei ist ca. 200 Kilobye groß; ich möchte eine String-Resource erstellen und diese dann im Programm verwenden.

Hat das Jemand von Euch schonmal gemacht oder ist es, anders als bei Delphi, unter Lazarus nicht möglich?

Das Tool lazres habe ich schon genutzt, aber ich komme irgendwie nicht wirklich weiter...

Dankeschön für Eure Hilfe.

Gruß aus der Lüneburger Heide

Bernd

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: String-Resource unter Lazarus?

Beitrag von theo »

Damit vielleicht: http://sourceforge.net/project/showfile ... _id=240460" onclick="window.open(this.href);return false;
Hab's selber nicht getestet.

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: String-Resource unter Lazarus?

Beitrag von Socke »

Pegasus0211 hat geschrieben:Das Tool lazres habe ich schon genutzt, aber ich komme irgendwie nicht wirklich weiter...
Das Ressourcen-System funktioniert unter FreePascal etwas anders als unter Delphi. Unter Windows kann man in eine Programm-/Bibliotheksdatei "Ressourcen" mit hinein linken, was unter anderen Betriebssystemen (außer evtl OS/2) nicht möglich ist.
Unter FreePascal werden alle Ressourcen als Strings in eine Liste eingefügt (dies geschieht normalerweise im initialization-Abschnitt einer Unit). Das Tool Lazres konvertiert mehr oder weniger nur die Input-Dateien in einen String und schreibt ein LazarusResources.Add(); drum herum. Ein Beispiel mit sql-Dateien (in der erste Zeile steht, wie du das Programm aufrufen musst, die anderen beiden sind die Ausgabe):

Code: Alles auswählen

lazres resourcendatei.lrs datei1.sql datei2.sql
datei1.sql ResourceName='datei1' Type='SQL'
datei2.sql ResourceName='datei2' Type='SQL'
Im Programm eingefügt wird die Datei dann mit:

Code: Alles auswählen

{$I resourcendatei.lrs}
Zur Laufzeit kannst du dann folgendermaßen darauf zu greifen:

Code: Alles auswählen

var
  res: TLResource;
begin
  res := LazarusResources.Find('datei1','SQL');
  if res <> nil then begin
    WriteLn(res.Value);
  end;
end;
Anstelle des WriteLn() musst du dann deinen Dateiinhalt, welcher komplett als String vorliegt, bearbeiten.
Wenn sich der Inhalt deiner SQL-Datei häufig ändert (d.h. die Ressourcendatei muss oft neu erstellt werden) ist es am einfachsten die gesamte Datei in einen String zu packen und diesen dann zu bearbeiten. Werden verschiedene Teile der an verschiedenen Stellen im Programm benötigt und wird die SQL-Datei nur selten (oder nur wenig umfangreich) bearbeitet, ist es wahrscheinlich praktikabler für jedes SQL-Statement eine eigene Lazarus-Ressource zu erstellen, da dann auf jeden String einzeln zugegriffen werden kann.
http://wiki.lazarus.freepascal.org/Lazarus_Resources/de

MfG Socke
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten