Autor |
Beitrag |
bf109g.01
      
Beiträge: 84
|
Verfasst: Do 14.04.11 08:27
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
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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.
Wie wäre es mit TResourceStream und dann LoadFromStream bei den Lines deines Memos?
|
|
bf109g.01 
      
Beiträge: 84
|
Verfasst: 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... 
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 14.04.11 09:42
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: 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.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 14.04.11 10:22
Quelltext 1:
| ExcludeList RCDATA DISCARDABLE "exclude.lst" |
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
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 14.04.11 10:55
Das try..except..raise ist doch irgendwie sinnfrei. 
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 14.04.11 10:55
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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 
      
Beiträge: 84
|
Verfasst: 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
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 16.04.11 12:12
In dem Ressourcenskript muss stehen: Quelltext Das RT davor steht in Delphi einfach für Resource Type. 
Für diesen Beitrag haben gedankt: bf109g.01
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Sa 16.04.11 12:22
Versuchs mal damit...
Einloggen, um Attachments anzusehen!
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|