Entwickler-Ecke
Dateizugriff - TMemo-Inhalt aus Ressource laden
bf109g.01 - Do 14.04.11 08:27
Titel: TMemo-Inhalt aus Ressource laden
Hallo, ich habe in meinem Form1 ein TMemo, dessen Zeilen ich mit dem Inhalt einer TXT_Datei füllen will.
Diese TXT ist in meinem file.rc als Ressource mit eingebunden.
Ich habe jetzt folgendes versucht: TMemo.Lines.Add(LoadFromResourceName(HInstance, 'Txt_Hist')); und auch dieses versucht: TMemo.Lines.LoadFromResourceName(HInstance, 'Txt_Hist'));
Aber das funktioniert wohl nicht. Wie bekomme ich das geladen?
THX & LG
jaenicke - Do 14.04.11 08:35
bf109g.01 hat folgendes geschrieben : |
Aber das funktioniert wohl nicht. |
Es wäre mir neu, dass LoadFromResourceName irgendwo anders als in Grafik-Klassen existiert. :nixweiss:
Wie wäre es mit TResourceStream und dann LoadFromStream bei den Lines deines Memos?
bf109g.01 - Do 14.04.11 09:10
Moderiert von
Narses: Komplett-Zitat des letzten Beitrags entfernt.
Ich habe die TXT datei zu den Sounds und Bildern in die Res-Datei gepackt.
Wie ich die mit deinen Hinweisen aufrufen soll, geht mir nicht auf, habe aber auch keine Ahnung davon, muss also über Try&Error basteln:
Lines.LoadfromStream(HInstance, 'Txt_Hist');:[Pascal Fehler] Spiel.pas(493): E2010 Inkompatible Typen: 'TStream' und 'Cardinal'
Lines.TResourceStream(HInstance, 'Txt_Hist');:[Pascal Fehler] Spiel.pas(493): E2003 Undefinierter Bezeichner: 'TResourceStream'
Kp, vllt setze ich da einfach nur alles falsch zusammen... :(
Narses - Do 14.04.11 09:45
Moin!
Deklariere den Text als resourcestring und "lade" ihn per Zuweisung an Memo1.Lines.Text := MyResourceString;, dann kümmert sich der Compiler darum, das richtig zu verpacken. :idea:
cu
Narses
Delete - Do 14.04.11 10:22
Quelltext
1:
| ExcludeList RCDATA DISCARDABLE "exclude.lst" |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| function LoadTextFromResourceByName(ResourceName: ansiString): AnsiString; var ResourceStream: TResourceStream; begin ResourceStream := TResourceStream.Create(HInstance, ResourceName, RT_RCDATA); try try SetLength(Result, ResourceStream.Size); ResourceStream.ReadBuffer(Result[1], ResourceStream.Size); except raise; end; finally ResourceStream.Free; end; end;
function LoadTextFromResourceByID(ResourceID: Cardinal): AnsiString; var ResourceStream: TResourceStream; begin ResourceStream := TResourceStream.CreateFromID(HInstance, ResourceID, RT_RCDATA); try try SetLength(Result, ResourceStream.Size); ResourceStream.ReadBuffer(Result[1], ResourceStream.Size); except raise; end; finally ResourceStream.Free; end; end; |
jaenicke - Do 14.04.11 10:55
Das try..except..raise ist doch irgendwie sinnfrei. :gruebel:
Delete - Do 14.04.11 10:55
Warum?
jaenicke - Do 14.04.11 11:17
Weil du die Exception abfängst und die gleiche dann direkt wieder wirfst. Da kommt das gleiche heraus als ob du sie erst gar nicht behandelst.
Delete - Do 14.04.11 12:02
Ach so, das meinst du. Ist eine Angewohnheit von mir, weil ich dort eventuell noch eigen Exceptions werfe.
bf109g.01 - Sa 16.04.11 12:06
Ich habe jetzt folgendes:
Datei "t.rc":
Text RT_RCDATA Hist.txt
t.res ist eingebunden:
{$R t.res}
Jetzt das Programm:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var RS: TResourceStream; begin RS := TResourceStream.Create(HInstance,'Text', RT_RCDATA); try Memo1.Lines.LoadFromStream(RS); finally RS.Free; end; end; |
Und der Fehler:
Zitat: |
Ressource Test wurde nicht gefunden |
Was läuft da bitte falsch?
jaenicke - Sa 16.04.11 12:12
In dem Ressourcenskript muss stehen:
Das RT davor steht in Delphi einfach für Resource Type. ;-)
bummi - Sa 16.04.11 12:22
Versuchs mal damit...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!