AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Wie bekommt man ResourceString ID wenn man den String hat?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie bekommt man ResourceString ID wenn man den String hat?

Ein Thema von GuenterS · begonnen am 26. Aug 2004 · letzter Beitrag vom 26. Aug 2004
Antwort Antwort
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#1

Wie bekommt man ResourceString ID wenn man den String hat?

  Alt 26. Aug 2004, 10:46
Hallo,

ich habe folgendes Problem. Ich nutze Multilizer 6, welches direkt und sofort alle Resourcestrings übersetzt, damit bin ich jetzt auch sehr zufrieden. Das geht mit dem Tool sehr gut.

Jetzt habe ich aber das Problem, dass ich diese Strings ja auch für Loggingzwecke verwende und ich für diesen Fall natürlich keine Übersetzung wünsche.

Nachdem die Strings in entsprechenden resource "DLL"s gespeichert werden, müßte ich "nur" wissen, welche ID diesem String zugewisen wurde um den entsprechenden String dann in der Englischen DLL zu finden.

Soll ungefähr so gehen...

Delphi-Quellcode:
function getEnglischString(const ATranslatedString: integer): string;
const
  CEnglishDLL = 'C:\d7\Local.App\ML6\DummyProject.EN';
var
  lResRec: PResStringRec;
  lDLLHandle: Cardinal;
  lIdentifier: integer;
begin
  Result := '';
  lResRec := new(PResStringRec);
  try
    lDLLHandle := LoadLibraryEx(PChar(CEnglishDLL), 0, LOAD_LIBRARY_AS_DATAFILE);
    if lDLLHandle <> INVALID_HANDLE_VALUE then
    begin
      lIdentifier := getResourceIDFromString(ATranslatedString); //die Funktion ist gesucht...
      lResRec^.Module := @lDLLHandle;
      lResRec^.Identifier := lIdentifier;
      Result := LoadResString(lResRec);
    end;
  finally
    dispose(lResRec);
  end;
end;
Günter
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Wie bekommt man ResourceString ID wenn man den String ha

  Alt 26. Aug 2004, 11:27
Schau dir mal MSDN-Library durchsuchenEnumResourceNames an. Das ist zwar kein direkter Weg, um an die ID zu kommen, aber so kommst du an alle Resourcen. Per Vergleich mit deinem String solltest du die ID ermitteln können.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Wie bekommt man ResourceString ID wenn man den String ha

  Alt 26. Aug 2004, 12:22
Es geht auch anders.

Es ist wichtig, dass man wirklich die Adresse des Resourcestrings übergibt,

Delphi-Quellcode:
function getIdentifier(AP: Pointer): integer;
begin
  Result := PResStringRec(AP).Identifier;
end;

Delphi-Quellcode:
...

resourcestring
   sMessage1 = 'Message1';

var
   _Identifier: integer;

_Identifier := getIdentifier(@sMessage1);

...
Günter
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:02 Uhr.
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