Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Resource-File in Tokyo mit TEXT (https://www.delphipraxis.net/192848-resource-file-tokyo-mit-text.html)

HJay 24. Mai 2017 20:39

Resource-File in Tokyo mit TEXT
 
Ich upgrade gerade einige Projekte von XE7 zu 10.2 Tokyo. In einem Projekt verwende ich eine eigene Ressource als rc-Datei mit folgendem String-Inhalt:

Code:
codekey TEXT "codekey.txt"
Zugriff im Programm dann über

Delphi-Quellcode:
var ACodeKey : String;

{...} 

ACodeKey := GetResourceAsString('codekey', 'text');
Wenn ich nun bei Tokyo versuche, über "Projekt > Ressourcen und Bilder" diese Resource auf moderne Art einzubinden, so kann ich als Typ nicht TEXT auswählen, sondern RCDATA nehmen. Das Programm stürzt dann beim Zugriff auf die Resource ab.

Wie bindet man denn Text-Resourcen in Tokyo ein?

Ich habe auch versucht, alle möglichen Dateien (*res, otares, rc) zu löschen und sie von Tokyo neu aufbauen zu lassen, aber irgendwie klappt es nicht. In XE7 lief es tadellos.

HJay 24. Mai 2017 20:59

AW: Resource-File in Tokyo mit TEXT
 
Update: Ich habe jetzt das rc-File mit meiner TEXT-Resource manuell mit brcc32 zu einer Datei namens RESSOURCES.RES compiliert wie früher --- weiterhin Absturz.

Dann habe ich das Tokyo automatisch in die dpr-Datei nach der uses-Anweisung eingefügte {$R *.res } durch meinen Dateinamen ersetzt {$R RESSOURCES.RES } und VOR die uses-Anweisung verschoben und jetzt klappt es zum Glück wieder. Ich weiß aber nicht wirklich warum.

Frage: Muss bei Tokyo *.res eingebunden werden und was steht eigentlich in der von Tokyo selbst angelegten res-Datei? Genügt es wie oben angegeben in der dpr-Datei nur die eigene Ressource-Datei einzubinden?

Wie kann man TEXT-Resourcen anders als manuell einbinden?

haentschman 25. Mai 2017 08:03

AW: Resource-File in Tokyo mit TEXT
 
Liste der Anhänge anzeigen (Anzahl: 2)
Moin...:P

Bei so viel Fragen ist ein Beispiel angebrachter. Anbei ein Beispielprojekt. Da mußt du das nur auf deine Gegebenheiten anpassen. :P

Zitat:

Ich habe jetzt das rc-File mit meiner TEXT-Resource manuell mit brcc32 zu einer Datei namens RESSOURCES.RES compiliert wie früher
...ist in Ordnung. Alternativ: Das macht Delphi automatisch (Erzeugen). :thumb: Früher ist out. 8-)
Zitat:

Genügt es wie oben angegeben in der dpr-Datei nur die eigene Ressource-Datei einzubinden?
...prinzipiell ja.(RES) In der Regel hast du aber an deiner "RC" auch Änderungen. Da ist das Mitcompilieren besser. Die Quellen müssen dann vorhanden sein.
Zitat:

was steht eigentlich in der von Tokyo selbst angelegten res-Datei
...darüber gibt dir ein beliebiger Resource Editor Auskunft. Beispiel: http://www.chip.de/downloads/Resourc..._71937653.html

Uwe Raabe 25. Mai 2017 09:15

AW: Resource-File in Tokyo mit TEXT
 
Was genau macht denn GetResourceAsString?

Uwe Raabe 25. Mai 2017 09:24

AW: Resource-File in Tokyo mit TEXT
 
Also folgendes funktioniert bei mir unter Tokyo:

- unter Projekt - Ressourcen und Bilder wähle ich die passende Textdatei aus, vergebe den Namen "codekey" und schreibe bei Ressourcentyp "TEXT" hinein.
- im Programm kann ich den Inhalt der Ressource mit folgendem Code auslesen:

Delphi-Quellcode:
var
  lst: TStringList;
  stream: TResourceStream;
begin
  stream := TResourceStream.Create(HInstance, 'codekey', 'TEXT');
  try
    lst := TStringList.Create;
    try
      lst.LoadFromStream(stream);
      Memo1.Lines := lst;
    finally
      lst.Free;
    end;
  finally
    stream.Free;
  end;
end;

haentschman 25. Mai 2017 09:34

AW: Resource-File in Tokyo mit TEXT
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

"Projekt > Ressourcen und Bilder" diese Resource auf moderne Art einzubinden, so kann ich als Typ nicht TEXT auswählen, sondern RCDATA nehmen.
...Man kann auch TEXT eingeben und nicht nur die Auswahlen auswählen. :P

Nachtrag Ressourcen und Bilder:
1. Wenn man einmal TEXT eingeben hat, steht es in allen Projekten zur Verfügung. Wenn man Delphi neu startet ist es wieder zurückgesetzt.
2. Wenn man die RC lädt, werden nur die Anweisungen für das automatische compilieren und die zugehörigen Dateien in die DPR bzw. das Projekt eingefügt. Der Name der compilierten Ressource ist identisch mit der RC Datei. Der Bezeichner und Typ sind nicht relevant.
3. Den Typ braucht man nur wenn man z.B. Bilder in die Projektressource (.DRES) aufnehmen will.

HJay 26. Mai 2017 10:46

AW: Resource-File in Tokyo mit TEXT
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1372717)
Was genau macht denn GetResourceAsString?

Delphi-Quellcode:
  function GetResourceAsString(ResName: pchar; ResType: pchar): string;
    var ResData: PChar;
        ResSize: Longword;
  begin
    ResData := GetResourceAsPointer(resname, restype, ResSize);
    SetString(Result, ResData, ResSize);
  end;

HJay 26. Mai 2017 10:51

AW: Resource-File in Tokyo mit TEXT
 
Zitat:

...darüber gibt dir ein beliebiger Resource Editor Auskunft. Beispiel: http://www.chip.de/downloads/Resourc..._71937653.html
Danke, werde ich mir gleich mal anschauen.

Bernhard Geyer 26. Mai 2017 11:15

AW: Resource-File in Tokyo mit TEXT
 
Zitat:

Zitat von HJay (Beitrag 1372785)
Zitat:

Zitat von Uwe Raabe (Beitrag 1372717)
Was genau macht denn GetResourceAsString?

Delphi-Quellcode:
  function GetResourceAsString(ResName: pchar; ResType: pchar): string;
    var ResData: PChar;
        ResSize: Longword;
  begin
    ResData := GetResourceAsPointer(resname, restype, ResSize);
    SetString(Result, ResData, ResSize);
  end;

GetResourceAsPointer ist keine Standard-Delphi-Funktion die mitgeliefert wird.
Wie schaut also GetResourceAsPointer aus?

HJay 26. Mai 2017 11:29

AW: Resource-File in Tokyo mit TEXT
 
Zitat:

Zitat von haentschman (Beitrag 1372708)
Anbei ein Beispielprojekt. Da mußt du das nur auf deine Gegebenheiten anpassen.

Wow, vielen Dank, sehr nett!

Delphi zickt aber leider bei mir massiv rum. Ich habe jetzt mal testweise {$R CODEKEY.RES CODEKEY.RC } eingebaut, aber es wird keine RES-Datei erzeugt.

Die Compilierung misslang mit der Meldung "BRCC32 failed unexpectedly. FilenotFoundException: ... RESSOUCRES.RC nicht gefunden." -- Delphi hatte sich also irgendwo gemerkt, dass ich früher mal RESSOURCES.RES verwendet habe. Nur wo? Unter Projekt > Ressourcen ist alles leer, andere $R-Befehle kommen nicht vor. Ich habe darauf hin *.dproj und weitere Projekt-Dateien gelöscht und das Projekt neu geöffnet. Damit verschwand dann die Fehlermeldung.

Allerdings wird immer noch keine CODEKEY.RES erzeugt, obwohl die Compilierung fehlerfrei durchläuft!

Dann habe ich {$R CODEKEY.RES CODEKEY.RC } um die Anführungszeichen ergänzt: {$R 'CODEKEY.RES' 'CODEKEY.RC' } -- jetzt erzeugt er eine CODEKEY.RES, aber die Compilierung failed mit entsprechender Fehlermeldung "FilenotFoundException: ... CODEKEY.RC nicht gefunden. Was für ein Widerspruch in sich, wo er doch die RES-Datei erzeugt...

Ich weiß nicht weiter.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:46 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz