2013-07-20 10 views
5

Ich habe eine benutzerdefinierte Komponente, die einen ziemlich großen (etwa 1MB) UTF8-Text benötigt, um zu funktionieren. Für Entwicklungszwecke habe ich das gerade aus einer Datei geladen. Jetzt möchte ich diese Datei loswerden. Was ist der einfachste Weg, um den Inhalt in der Komponente zu speichern, so dass der Benutzer der Komponente sich nicht darum kümmern muss?Wie kann man einen großen Text in einer Delphi-Komponente speichern?

Zuerst habe ich versucht, die Zeichenkette konstant zu machen, aber bald fing Delphi an, sich auf viele verschiedene Arten zu beschweren (zu lange oder zu viele, zu wenig Speicher usw.). Als ich zum Einbetten es als Ressource eingeschaltet, fand ich, dass die Ressource nicht automatisch in die eigentliche Anwendung als auch kompiliert werden, so dass es zu der Komponente Benutzer nicht transparent ist ...

aktualisiert

ich es bekommen hätte funktioniert, wenn ich selbst eine Ressourcendatei erstelle, die ich manuell zur Einheit hinzufüge. Dann brauche ich noch ein Pre-Build-Event, damit es aktuell ist. Die Frage bleibt, warum es nicht funktioniert, wenn ich es über das Delphi-Menü zum Paket hinzufüge und nicht zur Einheit. Und warum {$R myresource.res myresource.rc} kompiliert es nicht automatisch, wie es sollte ...?

Update 2

Anscheinend ist der Ressource-Skript muss das Projekt arbeitet für die automatische Zusammenstellung hinzugefügt werden.

+0

Wie haben Sie es als Ressource hinzugefügt? Es sollte auf diese Weise funktionieren und in die Ressourcentabelle der Anwendung eingefügt werden (vorausgesetzt, dass die Ressource zum Zeitpunkt der Erstellung der Anwendung gefunden werden kann). –

+2

@KenWhite Ich ging einfach zu 'Project',' Resources ... 'und fügte die Datei dem Komponentenprojekt hinzu. http://StackOverflow.com/Q/9824396/1163893 hat mich glauben lassen, dass es nie so funktionieren wird, ohne etwas mit dem Anwendungsprojekt zu tun. –

Antwort

8

Hinzufügen der {$R myresource.res} Zeile in der Einheit, die die Komponente enthält, sollte funktionieren.

Sie können die Datei myresource.rc dem Paket der Komponente hinzufügen, damit Delphi automatisch myresource.res generiert.

+0

Ich habe die Datei über das Menü zum Komponentenprojekt hinzugefügt, wie in meinem Kommentar oben beschrieben. Im 'dpk' habe ich' {$ R * .res} '. Wenn ich auch '{$ R .res}' zu der Einheit hinzufüge, bekomme ich Warnungen über doppelte Ressourcen und es funktioniert immer noch nicht. Wenn ich stattdessen selbst ein anderes 'rc' erstelle, wird es nicht automatisch zu' res' kompiliert. –

+0

'{$ R MyText.res MyText.rc}' löst das auch nicht; Fehler bleibt gleich. –

+3

@ThijsvanDien: Versuchen Sie, die Ressource dem ** Projekt ** zuzuordnen. Es ist nicht Teil eines Projekts; Es ist Teil Ihrer Komponente. Es ist kein Pre-Build-Ereignis oder irgendetwas anderes erforderlich, wenn Sie es ordnungsgemäß als Ressource mit einem geeigneten Ressourcenskript in Ihre Komponente einschließen. Es wird automatisch kompiliert und verlinkt, wenn Ihre Einheit in einem Projekt verwendet wird. –