Entwickler-Ecke

Dateizugriff - REG_SZ Datei lesen dann .exe starten


kulka1 - Fr 29.05.09 15:17
Titel: REG_SZ Datei lesen dann .exe starten
Hallo!!

ich schreibe mal was ich vorhabe zu "programmieren":

also ich möchte wenn ich auf ein Button klicke das die Fifa.exe startet!
Den Code dafür ist mir bekannt. Nun möchte ich aber das auf anderen PC's auch die Fifa.exe ausgeführt wird auch wenn die Datei nicht im z.b. C:\Programme\EA SPORTS\FIFA 09.

Ein Freund von mir hat mir gesagt das ich n Registry schlüssel suchen muss, denn hab ich dann auch mit START -> Ausführen "regedit" gefunden.
Der lautet REG_SZ, wenn ich mich nicht täusche ;)
Mit dem Schlüssel soll es irgendwie möglich sein das man auf jedem PC, auf dem Fifa 09 installiert ist und durch drücken des Buttons das Spiel gestartet wird!

Ich hoffe ich habe alles ordnungsgemäß erklärt =), und so das es jeder verstehen kann :P!^^

Bin noch nicht so ein Experte, aber lerne ja dazu ;)

Hoffentlich könnt ihr mir weiterhelfen =)

MfG kulka1


FinnO - Fr 29.05.09 15:34

du hast nur noch keine Frage gestellt...


thepaine91 - Fr 29.05.09 15:48

Doch hat er. Nur ist sie schwer zu erkennen.
Frage: Gibt es einen Registry Key in dem standartmäßig der Fifa 09 ausführungspfad steht?


kulka1 - Fr 29.05.09 15:49

oh achso, ich dachte das wäre klar gewesen, also:

ich möchte einen code schreiben mit dem es möglich ist, das die fifa09.exe auch auf anderen pc's gestartet wird per Button Click, auch wenn es nicht im standard ordner (C:\Programme\EA SPORTS\FIFA 09) ist!

und mir wurde gesagt das es was mit der registry zutun hat!


thepaine91 - Fr 29.05.09 16:02

Sowas habe ich mal gemacht mit Wow.
Habe abegfragt ob der pfad C:\Programme\... ist wenn nicht habe ich den Datenträger nach der .exe durchsucht.
Aber auch das wird nicht die beste Lösung sein denke ich.

Mir wäre kein Registry schlüssel bekannt der dir dabei Helfen kann :nixweiss:


kulka1 - Fr 29.05.09 16:04

mhm ne, also mit etwas suchen sollte es nicht sein ;)
halt nur das wenn ich auf button1 zb klicke das dann aufjedem pc wo fifa installiert ist das auch gestartet wird ;)

bin mir zu 100 % sicher das sowas geht, aber ich selbst weiß halb nicht wie ich das mit der registry oder so kombinieren muss ;)


Marc. - Fr 29.05.09 16:06

Einen Registry-Schlüssel kannst Du z.B. so auslesen:

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:
uses registry;

procedure GetInfo(Dest: String);
  const
    KEY       = 'Control Panel\Desktop';
    W_NAME    = 'Wallpaper';
begin
  with TRegistry.Create do
  try
    RootKey := HKEY_CURRENT_USER;

   if OpenKey(KEY,False) then
    with TStringList.Create do
    try
      Add(W_NAME    + ': ' + ReadString(W_NAME));
    finally
      Free;
    end;

  finally
    Free;
  end;
end;

Hast du den Pfad zur Exe ausgelesen, kannst Du diese anschließend mit Shellexecute starten. ;)

Grüße,
Marc


jaenicke - Fr 29.05.09 16:07

Der Zugriff auf die Registry ist nicht weiter schwer, das geht mit TRegistry und in deinem Fall z.B. OpenKey, ReadString wie du oben siehst.

Du hast allerdings weder den Schlüssel noch den Namen des Wertes in der Registry genannt. REG_SZ ist nur der Typ des Wertes...


thepaine91 - Fr 29.05.09 16:11

Kulka1 ich meinte das auch so das du dann Fifa09 startest ich wüsste nur keinen anderen weg als mit einer Sucher nach fifa...exe den Pfad herauszufinden um das Programm zu starten. ^^ Und standartmäßig erstmal den c:\PROGRAMME überprüfen.

PS:
Als nächstes würde ich das nicht mit Delphi machen sondern mit z.B. c# da funktioniert es dann auch 100% auf Xp, vista, 7, 2k. (.net) da es ja auf jedem Rechner funktionieren soll. Und das könnte mit Delphi kompatiblitäts Probleme geben.


jaenicke - Fr 29.05.09 16:13

user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
Und das könnte mit Delphi kompatiblitäts Probleme geben.
Wie kommst du auf die Idee? Meine Delphiprogramme laufen zumeist von Windows 95 bis Windows 7 überall. C# ab Windows 2000 und mit neueren .NET Versionen erst ab XP...

Suchen der Exe ist ja wie gesagt wurde nicht notwendig, da (wie im Übrigen auch bei WoW) der Pfad in der Registry steht.


thepaine91 - Fr 29.05.09 16:18

jaenicke naja das finde ich erstaunlich das sie überall laufen. Das war bei mir noch nie so aber okay.
Und bin mir sicher das 2k auch .net umgebung verfügbar hat.
Egal ist ja nicht das Thema. Also vergessen wir das.

Na siehst du der RegistryKey war mir nicht bekannt sagte ich ja auch bereits.
Konnte im Thread nicht erkennen das es diesen gibt. Und dann natürlich über dir Registry.


kulka1 - Fr 29.05.09 16:18

wie kan ich denn den schlüssel von der REG_SZ herausfinden oder den namen des wertes`?


jaenicke - Fr 29.05.09 16:21

Das steht direkt dabei, wenn du im Registryeditor, den du angesprochen hast, den Wert gefunden hast.

Der Schlüssel wird vermutlich irgendwo unter HKEY_LOCAL_MACHINE liegen und dort ca. Software\[Firma]\Fifa\... heißen. Und der Name steht direkt neben dem Wert.

// EDIT:
user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
jaenicke naja das finde ich erstaunlich das sie überall laufen. Das war bei mir noch nie so
Man muss natürlich schauen was man benutzt, aber normale Programme laufen auch unter 95.

Ab Delphi 2009 mit Unicode geht es natürlich erst ab Windows 2000, weil Win 9x das schlicht nicht kannte.

user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
Und bin mir sicher das 2k auch .net umgebung verfügbar hat.
Aber nicht 3.5, das geht erst ab XP...
Siehe Download:
http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&displaylang=en


kulka1 - Fr 29.05.09 16:29

also ich habe im registyeditor gesucht, der wert war hier: C:\Programme\EA SPORTS\FIFA 09 und dann hab ich ma kopiert:

HKEY_CLASSES_ROOT\TypeLib\{54CB0D09-E60F-41B1-B8AF-C7F6652621EC}\1.0\HELPDIR

was ist jetzt genau der schlüssel, sorry für die doofe frage :P, aber man lernt ja nur raus ;) habe mit der registry vorher noch nie was gemacht ;)


jaenicke - Fr 29.05.09 16:33

Damit hast du schon den Wert für RootDir (HKEY_CLASSES_ROOT) und OpenKey ('TypeLib\{54CB0D09-E60F-41B1-B8AF-C7F6652621EC}\1.0\HELPDIR'), falls der Wert selbst keinen Namen hat, kannst du dann ReadString('') benutzen.

Diese Stelle in der Registry ist aber eigentlich nicht die, die ich erwartet hätte. Ich hätte erwartet:
HKEY_LOCAL_MACHINE\Software\EA SPORTS\FIFA 09\...
Oder sowas.


kulka1 - Fr 29.05.09 16:37

also das kann natürlich auch sein... ich habe einfach bei suchen "fifa" eingegeben!

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Diese Stelle in der Registry ist aber eigentlich nicht die, die ich erwartet hätte. Ich hätte erwartet:
HKEY_LOCAL_MACHINE\Software\EA SPORTS\FIFA 09\...
Oder sowas.


habe da auch nochmal geguckt ;), dort weiß ich dann nur nicht welcher name das ist, habe da namen wie z.b. Display name wo der wert "FIFA 09" ist und dann noch ProductName wo der name "fifa09" ist.

nur was ist jetzt von alledem die richtige?


Marc. - Fr 29.05.09 16:42

Schau doch einmal OHNE die Suche unter HKEY_LOCAL_MACHINE -> Software -> EA SPORTS (?) -> Fifa (?)...

Das Programm RegMon [http://technet.microsoft.com/en-us/sysinternals/bb896652.aspx] von Sysinternals könnte dir bei der Suche auch helfen. Aber ich denke eigentlich nicht, dass der Eintrag so versteckt sein wird. ;)

Ist denn nirgendswo der Pfad eingetragen?


kulka1 - Fr 29.05.09 16:48

habe mal ein bild hochgeladen


jaenicke - Fr 29.05.09 16:50

Ja, da siehst du es doch. RootKey ist HKEY_LOCAL_MACHINE, der Schlüssel, der geöffnet werden muss, 'Software\EA Sports\FIFA 09' und der Wert 'Install Dir'.


Marc. - Fr 29.05.09 16:50

Da steht's doch: Install Dir

Edit: Ausfühliche Infos hat user profile iconjaenicke bereits einen Post weiter oben gepostet. ;)


kulka1 - Fr 29.05.09 16:54

achso installdir ist das... wie gesagt hatte keine ahnung von den ganzen zeugs ;), das ist bisher nie mein gebiet gewesen ;)
und hier mit soll ich das jetzt bei delphi einbinden?

oder kurz ne andere frage, wo mus sich den schlüssel jetzt hinschreiben?


user profile iconMarc. hat folgendes geschrieben Zum zitierten Posting springen:
Einen Registry-Schlüssel kannst Du z.B. so auslesen:

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:
uses registry;

procedure GetInfo(Dest: String);
  const
    KEY       = 'Control Panel\Desktop';
    W_NAME    = 'Wallpaper';
begin
  with TRegistry.Create do
  try
    RootKey := HKEY_CURRENT_USER;

   if OpenKey(KEY,False) then
    with TStringList.Create do
    try
      Add(W_NAME    + ': ' + ReadString(W_NAME));
    finally
      Free;
    end;

  finally
    Free;
  end;
end;

Hast du den Pfad zur Exe ausgelesen, kannst Du diese anschließend mit Shellexecute starten. ;)

Grüße,
Marc


in zeile 10?


jaenicke - Fr 29.05.09 16:56

Was Schlüssel und öffnen auf Englisch heißt, weißt du aber schon, oder? Wie wärs mit Key und open? Und um den zu öffnen eben OpenKey, also Zeile 12.

Und dass in Zeile 10 HKEY_LOCAL_MACHINE gehört, habe ich ja schon geschrieben.


thepaine91 - Fr 29.05.09 17:12

uses

Delphi-Quelltext
1:
 Windows, registry, usw....;                    


buttoncick

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var regist : Tregistry;
begin
 regist := Tregistry.create;
 regist.rootkey := hKEY_Local_machine;
 regist.openkey('Key', false);
 shellexecute(application.handle, 'open', regist.readstring('install dir'nilnil, SW_show);
 regist.closekey;
 regist.Free;
end;


kulka1 - Fr 29.05.09 17:15

danke das hat mir noch gefehlt =)... aber wenn ich starten will gibt er mir ne fehlermeldung bei shellexecute an, hab das jetzt so kopiert von dir (Undefinierter Bezeichner)

user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
uses

Delphi-Quelltext
1:
 Windows, registry, usw....;                    


buttoncick

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var regist : Tregistry;
begin
 regist := Tregistry.create;
 regist.rootkey := hKEY_Local_machine;
 regist.openkey('Key', false);
 shellexecute(application.handle, 'open', regist.readstring('install dir'nilnil, SW_show);
 regist.closekey;
 regist.Free;
end;


jaenicke - Fr 29.05.09 17:16

user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var regist : Tregistry;
begin
 regist := Tregistry.create;
 regist.rootkey := hKEY_Local_machine;
 regist.openkey('Key', false);
 shellexecute(application.handle, 'open', regist.readstring('install dir'nilnil, SW_show);
 regist.closekey;
 regist.Free;
end;


user profile iconkulka1 hat folgendes geschrieben Zum zitierten Posting springen:
danke das hat mir noch gefehlt =)... aber wenn ich starten will gibt er mir ne fehlermeldung bei shellexecute an, hab das jetzt so kopiert von dir (Undefinierter Bezeichner)
Da fehlt noch ShellAPI unter uses.


kulka1 - Fr 29.05.09 17:25

bei KEY habe ich jetzt Software\EA Sports\FIFA 09 hingeschrieben, also:

regist.openkey('Software\EA Sports\FIFA 09', false);


deinen punkt: ReadString gibt einen String zurück, ShellExecute erwartet aber einen PChar verstehe ich leider nicht ganz, was muss ich da denn verändern? und muss die klammer innen durch ein komme ersetzt werden oder muss da noch eine klammer dazu?


:D


thepaine91 - Fr 29.05.09 17:28

Einmal kein Kommentar von dir werd ich nie erleben.
Ich hab das kurz so abgetippt und ein bisschen überlegen für den Endnutzer schadet nicht das dort keine Fehlerbehandlung ist *wirst du kaum glauben* ist mir auch bewusst.
Und den Schlüssel kann er genauso selbst einsetzen.
Die klammer hätte ihm der compiler gesagt.
Pchar() ist das einzige was er vielleicht wirklich hätte nicht verstehen können. -.-

einfach

Delphi-Quelltext
1:
shellexecute(application.handle, 'open', Pchar(regist.readstring('install dir')), nilnil, SW_show);                    


kulka1 - Fr 29.05.09 17:32

super danke...es geht endlich =)... jetzt hab ich nur noch ne frage :D ;)

beim klicken auf dem button wird ja immer ein neues fenster geöffnet, kann man jetzt noch einstellen das man einmal den "pfad" angibt und der das dann immer speichert, auch wenn das programm geschlossen wird und dann wieder aufgemacht wird? ist das möglich?


jaenicke - Fr 29.05.09 17:34

Wie meinst du das? Meinst du du willst gar kein Formular erst sehen? Dann brauchst du auch gar keins erst. Oder was meinst du?


thepaine91 - Fr 29.05.09 17:36

Also ist doch unnötig da nen Pfad zu speichern dafür hast du ja den Registry eintrag. ^^
Außer du meinst es anders wenn ja nochmal genau erläutern.


jaenicke - Fr 29.05.09 17:39

Ich glaube ich habs verstanden:
Da du einen Pfad öffnest und nicht die Exe, kommt halt immer der Windows Explorer... Du musst da natürlich den Namen der Exe noch anhängen... :roll:

Und damit das mit der Registry ordentlich dasteht:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
uses
  Registry, ShellAPI;

var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey('Software\EA Sports\FIFA 09', False) and Reg.ValueExists('Install Dir'then
      ShellExecute(Handle, 'open', PChar(Reg.ReadString('Install Dir') + 'xyz.exe'), nilnil, SW_SHOWNORMAL)
    else
      ShowMessage('Spiel nicht gefunden');
  finally
    Reg.Free;
  end;
end;


thepaine91 - Fr 29.05.09 17:57

1. In deinem Quellcode steht aber xyz.exe dabei wurde sie oben bereits genannt!
2. Warum unnötig Fragen ob der Wert existiert aber vielleicht liefert EAGAMES ja unterschiedliche Installations routinen aus. Und lässt ihn manchmal weg.^^ Oder noch besser ein Zufallsgenerator. XD
3. Welches Handle?

Wenn du schon so peinlich auf jede kleinigkeit achtest. -.-


kulka1 - Fr 29.05.09 17:59

muss ich das hier denn dann so lassen? und den text den du geschrieben hast, muss der dann vor diesem hier? :


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var regist : Tregistry;
procedure TForm1.Button1Click(Sender: TObject);
begin
 regist := Tregistry.create;
 regist.rootkey := hKEY_Local_machine;
 regist.openkey('Software\EA Sports\FIFA 09', false);
 shellexecute(application.handle, 'open', Pchar(regist.readstring('install dir')), nilnil, SW_show);
 regist.closekey;
 regist.Free;
end;


thepaine91 - Fr 29.05.09 18:02

XD Nein.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
var regist : Tregistry; // Hier hin
begin
 regist := Tregistry.create;
 regist.rootkey := hKEY_Local_machine;
 regist.openkey('Software\EA Sports\FIFA 09', false);
 shellexecute(application.handle, 'open', Pchar(regist.readstring('install dir') + Fifa) , nilnil, SW_show);
 regist.closekey;
 regist.Free;
end;


jaenicke - Fr 29.05.09 18:03

user profile iconkulka1 hat folgendes geschrieben Zum zitierten Posting springen:
muss ich das hier denn dann so lassen? und den text den du geschrieben hast, muss der dann vor diesem hier?
Ähh... Dass die Quelltexte sich ähneln, siehst du aber schon, oder? :shock:
Wie wäre es, wenn du erst einmal verstehst was die machen, bevor du sie verwendest... :?

Die Quelltexte machen fast das selbe, nur einmal ohne Fehlerbehandlung usw.
Du musst bei meinem nur noch das xyz.exe durch fifa.exe ersetzen.

user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
1. In deinem Quellcode steht aber xyz.exe dabei wurde sie oben bereits genannt!
Das habe ich nicht gefunden gehabt auf die Schnelle, jetzt seh ichs auch.

user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
2. Warum unnötig Fragen ob der Wert existiert aber vielleicht liefert EAGAMES ja unterschiedliche Installations routinen aus.
Nein, aber es soll vorkommen, dass da ein Fehler auftritt und der Wert nicht da ist. Zum Beispiel passiert so etwas, wenn man ein programm einfach auf einen PC kopiert ohne es zu installieren.

user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
3. Welches Handle?
Das des Formulars? Sonst hätte ich ja Application oder so dazugeschrieben...


kulka1 - Fr 29.05.09 18:11

:D:D... also ich mache zz nur TurboPascal in der Schule im Informatikkurs, und Delphi bring ich mir sozusagen selber bei bevor wir das nächstes Schuljahr machen ;)

deswegen fällt mir das alles nicht so genau auf ;)


thepaine91 - Fr 29.05.09 18:11

Naja du denkst ein bisschen weit. ^^ Das programm wird warscheinlich eh nur auf seinem Rechner wenn überhaupt ausgeführt. ;)
Und gewöhn dich dran das mein Quelltext immer so aussieht ich schreib immer nur kurz und knapp. Damit die Leute noch was denken müssen.
Mir ging dein ständiges Klugscheißen grad einfach aufn nerv und hat mich i-wie in Wallung versetzt.

Nichts für ungut.

Und

Delphi-Quelltext
1:
2:
3:
shellexecute(application.handle, 'open', Pchar(regist.readstring('install dir')+ 'Fifa 09.exe'), nilnil, SW_show);
// sofern die Exe so heißt.
// aber die Exe konnte auch umbennant worden sein.

NP wenn du Fragen hast kannst mir ne Pm schicken geb ich dir mein Icq und kannst mich direkt fragen. ^^
Dann nehm ich mir auch mehr Zeit.


jaenicke - Fr 29.05.09 18:12

Oben stand fifa.exe ohne 09. ;-)


thepaine91 - Fr 29.05.09 18:13

*@!AHRG....* *Durchdreh* :motz: *jaenicke umbring!!!!* :evil:


XD Du musst mich hassen. XD


kulka1 - Fr 29.05.09 18:16

es schaut jetzt so aus bei mir:


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:
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey('Software\EA Sports\FIFA 09', False) and Reg.ValueExists('Install Dir'then
      ShellExecute(application.handle, 'open', PChar(Reg.ReadString('Install Dir') + 'fifa09.exe'), nilnil, SW_SHOWNORMAL)
    else
      ShowMessage('Spiel nicht gefunden');
  finally
    Reg.Free;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var regist : Tregistry; // Hier hin
begin
 regist := Tregistry.create;
 regist.rootkey := hKEY_Local_machine;
 regist.openkey('Software\EA Sports\FIFA 09', false);
 shellexecute(application.handle, 'open', Pchar(regist.readstring('install dir') + 'fifa09.exe') , nilnil, SW_show);
 regist.closekey;
 regist.Free;
end;


korrigiert mich bitte wennich was falsch habe -.-

und es kommt noch die fehlermeldung '.' erwartet aber ',' gefunden in zeile 12


jaenicke - Fr 29.05.09 18:19

Du kopierst echt ohne jegliches Verständnis für das was du da machst... :autsch: :autsch: :autsch:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey('Software\EA Sports\FIFA 09', False) and Reg.ValueExists('Install Dir'then
      ShellExecute(application.handle, 'open', PChar(Reg.ReadString('Install Dir') + 'fifa09.exe'), nilnil, SW_SHOWNORMAL)
    else
      ShowMessage('Spiel nicht gefunden');
  finally
    Reg.Free;
  end;
end;


kulka1 - Fr 29.05.09 18:48

ey jungs ich danke euch für alles :D, aber jetzt seit mir bitte nicht böse :D

ich bin total durcheinander jetzt, ich weiß garnicht mehr was von dem allen bei delphi rein soll^^


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey('Software\EA Sports\FIFA 09', False) and Reg.ValueExists('Install Dir'then
      ShellExecute(application.handle, 'open', PChar(Reg.ReadString('Install Dir') + 'fifa09.exe'), nilnil, SW_SHOWNORMAL)
    else
      ShowMessage('Spiel nicht gefunden');
  finally
    Reg.Free;
  end;
end;


wenn ich nur das "reinkopiere" dann sagt er mir das er Reg nicht kennt, habs dann auch in registry umbenannt xD, hat aber nichts gebracht weil er dann ein fehler bei ':=' gegeben hat ;)

und muss jetzt NUR das da oben rein? ich find hier nicht mehr durch... sorry aber ich bin n anfänger in sachen delphi.^^
nimmt es mir nicht übel ;), aber ihr könnt das ja alles schon ;) und ich lerne es gerade sozusagen :P.


jaenicke - Fr 29.05.09 18:51

Ja, vor dem begin fehlt noch das

Delphi-Quelltext
1:
2:
var
  Reg: TRegistry;
Da hab ich jetzt gar nicht mehr drauf geachtet...

user profile iconkulka1 hat folgendes geschrieben Zum zitierten Posting springen:
sorry aber ich bin n anfänger in sachen delphi.^^
[..] und ich lerne es gerade sozusagen :P.
Ersteres glaube ich, das ist klar, zweiteres habe ich so leichte Zweifel... ;-)


thepaine91 - Fr 29.05.09 19:25

wo das var hingehört hab ich doch schon vor einigen posts geschrieben :nixweiss:
Ich kann kein Delphi ich programmier erst seit gestern damit.
Ich tu immer nur so und versage stetig.


kulka1 - Fr 29.05.09 19:37

bin am verzweifeln xD, ich bin zu blöd dafür...

ich habe einfach mal n bild gemacht wie das bei mir aussieht


jakobwenzel - Fr 29.05.09 19:41

Du definierst dir die Variable Reg, nutzt aber mal Registry und mal regist....


kulka1 - Fr 29.05.09 19:42

user profile iconjakobwenzel hat folgendes geschrieben Zum zitierten Posting springen:
Du definierst dir die Variable Reg, nutzt aber mal Registry und mal regist....


okay das hab ich behoben ;), und mit dem RootKey?


jaenicke - Fr 29.05.09 19:43

Also du postest Quelltext, ich sage dir, dass da noch zwei Zeilen vor dem begin fehlen. Und dann änderst du wild den ganzen Quelltext... Das muss ich jetzt nicht verstehen, oder?

Bei RootKey muss es halt auch Reg heißen.


kulka1 - Fr 29.05.09 20:22

JUHU es läuft jetzt =), habe von ganz vorne angefangen und dann ganz ruhig geschaut was ich ändern muss... das ist jetzt der richtige Code^^...
habe das noch an meinem laptop ausprobiert wo fifa auf ner anderen partition installiert ist und es lief=)

ich bedanke mich bei euch =) ... man wird sich bestimmt nochmal schreiben :D:D:D


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:
34:
35:
36:
37:
uses registry;

procedure GetInfo(Dest: String);
  const
    KEY       = 'Software\EA Sports\FIFA 09';
    W_NAME    = 'Install Dir';
begin
  with TRegistry.Create do
  try
    RootKey := HKEY_LOCAL_MACHINE;

   if OpenKey(KEY,False) then
    with TStringList.Create do
    try
      Add(W_NAME    + ': ' + ReadString(W_NAME));
    finally
      Free;
    end;

  finally
    Free;
  end;
end;


var regist : Tregistry;
procedure TForm1.Button1Click(Sender: TObject);
begin
 regist := Tregistry.create;
 regist.rootkey := hKEY_Local_machine;
 if regist.openkey('Software\EA Sports\FIFA 09', false) and regist.ValueExists('Install Dir'then
 shellexecute(application.handle, 'open', Pchar(regist.readstring('install dir') + 'FIFA09.exe'), nilnil, SW_show)
 else
    ShowMessage('Spiel nicht gefunden');
 regist.closekey;
 regist.Free;
end;


thepaine91 - Fr 29.05.09 22:00

Na super ;) Glückwunsch aber:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var regist : Tregistry; // NICHT DA BITTE ^^
procedure TForm1.Button1Click(Sender: TObject);
var regist : Tregistry; // Hier bitte
begin
 regist := Tregistry.create;
 usw...


Und wie gesagt Angebot steht pm und ich kann dir auch msn, icq etc. geben dann hast du schnell eine Antwort ;)


Marc. - Sa 30.05.09 10:30

user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
Und wie gesagt Angebot steht pm und ich kann dir auch msn, icq etc. geben dann hast du schnell eine Antwort ;)

Der Sinn des Forums liegt darin, dass auch andere User mit gleichen Problemen über bereits vorhandene Threads an eine Lösung kommen können - da ist dein Angebot, die Aufgaben via Instant Messenger zu lösen, absolut kontraproduktiv.

Zu user profile iconkulka1: Copy + Paste hat noch nie jemanden dabei geholfen, etwas zu verstehen - auch bei Dir nicht. Du kopierst sinnlos irgendwelche Quelltexte, missachtest Empfehlungen und wunderst dich am Ende darüber, dass nichts funktioniert, aber ohne dir darüber weitere Gedanken zu machen. Mein Rat an Dich: Geh noch einmal den Thread von A bis Z durch und versuche zu verstehen, was wir dir beibringen wollten. :zwinker:


kulka1 - Sa 30.05.09 11:40

@ marc... ja das hab ich jetzt auch gelernt :D, ich hatte nur mein ziel vor augen das das mit dem fifa.exe klappt :D
habe dann irgendwie nur noch kopiert :D, aber am ende hab ich dann nochmal alles von vorne gemacht und dann wirklich auch was verändert^^

und jetzt klappt es ja =)^^, danke :)


thepaine91 - Sa 30.05.09 23:59

Marc. ansichtssache


jaenicke - So 31.05.09 00:04

user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
Marc. ansichtssache
Wenn du damit das mit der PN meinst: Das steht auch in den Richtlinien.
Richtlinien [http://www.delphi-forum.de/sites.php?id=9] hat folgendes geschrieben:
2.3 Antworten IMMER ins Forum
Es gibt eine Regel im Usenet welche auch bei uns auf den Webseiten der Entwickler-Ecke Gültigkeit hat: Wer im Forum fragt, liest auch im Forum mit, d. h. Antworten auf Fragen bitte IMMER im Forum posten.
[...]
Ebenfalls unerwünscht, da nicht sinnvoll für die Allgemeinheit, sind Antworten per E-Mail (außer man sendet diese zusätzlich).
Und auch bei neuen Fragen macht das natürlich viel mehr Sinn, da es im Forum öffentlich mehr Leuten hilft ggf.


thepaine91 - So 31.05.09 13:55

vorher verstehen um was es geht. es geht um kleine fragen da kann ich schnell helfen und auf diese frage wollte ich ja nie via pm antworten. Daher ist es nichts schlimmes gravierende fragen nach wie vor im Forum.
mfg nic usw...
Und thema hat sich eigentlich soweit auch erledigt.