Autor Beitrag
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: So 26.01.03 19:26 
So, Leute,
ich hab hier ein SQL-Script, das eine Datenbank erzeugen soll, das Teil ist halt ziemlich lang, aber als einzelne Datei will ichs nicht haben. Ich dachte mir, ich mach das als Ressource da rein.

Hab also eine .rc-Datei erzeugt mit
ausblenden Quelltext
1:
SQLScript RCDATA SQLScript.txt					

Dann in die Unit eingebunden. Und jetzt die Frage: Wie lass ich das Teil ausführen, d.h. wie kriege ich das aus der Ressource raus und mit welcher Komponente kann man am besten solche komplett-Scripts durchziehen. Hab an IBSQL gedacht, aber wie hol ichs aus der Ressource raus.

Oder gibts bessere Möglichkeiten?

Gruß
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mo 27.01.03 11:25 
Hi!

Die Klasse TResourceStream sollte dir weiterhelfen.

Cu, :)
Udontknow
UGrohne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 27.01.03 13:22 
Hab mir das jetzt mal angeschaut und eine Variable TResourceStream erstellt, diese mit Create aufgerufen und das Zeug eingetragen. Aber er bringt mir immer den Fehler, Ressource nicht gefunden.

Kannste mir vielleicht mal ein kleines CodeBeispiel posten, ich häng hier grad irgendwie ein bisschen :(

gruß
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mo 27.01.03 17:43 
Klar, kein Problem.

Also, ich gehe folgendermassen vor:

Ich habe eine Textdatei namens Test.txt, in dieser steht "Dies ist ein Test!".
In einer weiteren Datei lege ich, wie du es schon gemacht hast, die zu kompilierenden Ressourcen fest. Ich habe dazu eine Datei testres.txt mit dem Inhalt "test RCDATA test.txt" angelegt.

Mit dem Programm BRCC32 kompiliere ich nun die Resource-Datei:
ausblenden Quelltext
1:
BRCC32.exe testres.txt					


Daraufhin wird eine Datei mit Namen testres.res erzeugt. Diese haue ich nun einfach in meine Unit:
ausblenden Quelltext
1:
{$R testres.res}					


Anschliessend kann ich den Inhalt der Resource folgendermassen abrufen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
var Stream:TResourceStream;
begin
  Stream:=TResourceStream.Create(hInstance,'test',RT_RCDATA);
  try
    Memo1.Lines.LoadFromStream(Stream);
  finally
    Stream.Free;
  end;
end;


Ich denke, du hast den Fehler gemacht, anstelle des ursprünglichen Ressourcennamens ('test') den Namen des erzeugten Files ('testres') an den Stream zu übergeben.

Cu,
Udontknow
UGrohne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 27.01.03 17:48 
Ne, ich hab nen ganz anderen blöden Fehler gemacht. Hab die Prozedur ursprünglich im Mainform gehabt, sie dann aber in ein Unterform kopiert, aber vergessen, die Resource da einzubinden *g*

Trotzdem danke....