AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit lesen aus einer INI

Ein Thema von ehem. Benutzer · begonnen am 9. Mär 2005 · letzter Beitrag vom 9. Mär 2005
Antwort Antwort
Seite 1 von 2  1 2      
ehem. Benutzer
(Gast)

n/a Beiträge
 
#1

Problem mit lesen aus einer INI

  Alt 9. Mär 2005, 18:40
Hallo,
ich habe folgenden Source :

Delphi-Quellcode:
procedure TForm1.start1Click(Sender: TObject);
var ini: TIniFile;
      a: string;
      Reg: TRegistry;
begin
   start1.checked := not start1.checked;
   if start1.checked = true then
      begin
      ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+ 'config.ini');
      ini.WriteString('Drive O+C','Start mit Windows','true');
      end
  else
     begin
      ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+ 'config.ini');
      ini.WriteString('Drive O+C','Start mit Windows','false');
     end;
   ini.free;
   ini:=TIniFile.Create('config.ini');
      try
          begin
              a := ini.ReadString('Drive O+C','Start mit Windows', '');
              Reg := TRegistry.Create;
               begin
                  if a = 'truethen
                    begin
                     Reg := TRegistry.Create;
                        try
                          Reg.RootKey := HKEY_CURRENT_USER;
                          Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
                          Reg.WriteString('Drive O+C', ParamStr(0));
                          Reg.CloseKey;
                          label3.caption := 'ja'; // das hab ich nur um zu testen ob das wirklich abgearbeitet wird - und ja es wird abgearbeitet
                        finally
                          Reg.Free;
                    end
                  else
                    begin
                     Reg := TRegistry.Create;
                      try
                       Reg.RootKey := HKEY_CURRENT_USER;
                       Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
                       Reg.DeleteValue('Drive O+C');
                       Reg.CloseKey;
                       label3.caption := 'ja// das hab ich nur um zu testen ob das wirklich abgearbeitet wird - nein, es wird nicht abearbeitet - es wird nicht im label angezeigt...
                      finally
                       Reg.Free;
                    end;
               end;
          end;
      finally
       ini.free;

end;
Und erhalte beim compilieren folgende Fehler:
Zitat:
Erzeugen
[Fehler] main.pas(176): 'END' erwartet, aber 'ELSE' gefunden
[Fehler] main.pas(177): Operator oder Semikolon fehlt
[Fehler] main.pas(190): 'END' erwartet, aber 'FINALLY' gefunden
[Fehler] main.pas(193): EXCEPT oder FINALLY erwartet
[Fehler] main.pas(195): ';' erwartet, aber '.' gefunden
[Fehler] main.pas(197): Deklaration erwartet, aber Dateiende gefunden
[Fataler Fehler] Project2.dpr(6): Verwendete Unit 'main.pas' kann nicht compiliert werden
Nur kann ich die Fehler nicht nachvollziehen.
Ich finde einfach den Fehler nicht

Hoffe ihr seht was ich falsch gemacht habe.

Danke schon mal,


MfG
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#2

Re: Problem mit lesen aus einer INI

  Alt 9. Mär 2005, 18:45
Ich würde mal die begins und ends im Code zählen.
Ausserdem brauchst du kein begin bei try
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Problem mit lesen aus einer INI

  Alt 9. Mär 2005, 18:49
Ich hab den ersten Teil deines Quelltextes mal ein wenig umformatiert (ist übersichtlicher mehr nach meinem Geschmack).
Dabei habe ich fragwürdige Stellen mit Kommentar gekennzeichnet. Wenn du dir diese Stellen nochmal anschaust und korrigeirst, sollte es laufen (oder zumindest ein paar Fehlermeldungen weniger vom Compiler geben ).
Delphi-Quellcode:
procedure TForm1.start1Click(Sender: TObject);
var ini: TIniFile;
    a: string;
    Reg: TRegistry;
begin
  start1.checked := not start1.checked;
  if start1.checked = true then
  begin
    ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+ 'config.ini');
    ini.WriteString('Drive O+C','Start mit Windows','true');
  end//if
  else
  begin
    ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+ 'config.ini');
    ini.WriteString('Drive O+C','Start mit Windows','false');
  end;//else
  ini.free;
  ini:=TIniFile.Create('config.ini');
  try
    begin///<--wozu steht hier ein BEGIN?? bei try braucht man keins
    a := ini.ReadString('Drive O+C','Start mit Windows', '');
    Reg := TRegistry.Create;
    begin///und das hier? was beginnt den hier? (daran wirds wohl liegen
    if a = 'truethen
    begin
      Reg := TRegistry.Create;
      ....//usw. usw.
MfG
Binärbaum

[edit]
Ich würde dir auch vorschlagen, deinen Quelltext anders bzw. so einzurücken, dass man die Struktur besser erkennen kann. Das ist dann nicht nur für dich leichter, sondern auch für alle anderen, die hier im Forum deinen Quelltext lesen.
[/edit]
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
ehem. Benutzer
(Gast)

n/a Beiträge
 
#4

Re: Problem mit lesen aus einer INI

  Alt 9. Mär 2005, 18:52
Ok soweit war ich auch schon, also an den jeweiligen stellen ein 'end;' eingefügt, nur
steht nie nein im Label ?! Also wenn ich auf die Option im PopUpMenu klicke und der Haken weggeht,
also das checked, müsste eigentlich ein 'Nein' im Label 3 erscheinen, das geschieht aber nicht.

Das bedeutet auch das er den Eintrag nicht wieder aus der Registry entfernt ---> ich habe nachgesehen
und es ist da, obwolh es weg sein müsste..


@ Binärbaum : es steht trotzdem nicht 'nein' im label...


MfG
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

Re: Problem mit lesen aus einer INI

  Alt 9. Mär 2005, 18:53
Und hier:

Delphi-Quellcode:
if a = 'truethen
                    begin
                     Reg := TRegistry.Create;
                        try
                          Reg.RootKey := HKEY_CURRENT_USER;
                          Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
                          Reg.WriteString('Drive O+C', ParamStr(0));
                          Reg.CloseKey;
                          label3.caption := 'ja'; // das hab ich nur um zu testen ob das wirklich abgearbeitet wird - und ja es wird abgearbeitet
                        finally
                          Reg.Free;
                    end // ende von try-finally ... oder vom if ???
                  else
                    begin
                     Reg := TRegistry.Create;
                      try
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: Problem mit lesen aus einer INI

  Alt 9. Mär 2005, 18:53
Delphi-Quellcode:
try
[...]
finally/except
[...]
end;
So sieht ein Ressourcenschutzblock aus.
Du hast aber:
Delphi-Quellcode:
if [...] then
begin
  [...]
  try
    [...]
  finally
    [...]
end;
Das end am Schluss schließt bei dir nicht finally sondern den if-Block ab. Aber irgendwoher muss der Compiler ja wissen, wo finally endet.

[edit]Ähm! Wenn a true ist, steht im Label 'ja', wenn a false ist auch 'ja'. Wann soll dann 'nein' stehen ?
Und warum verwendest du nicht Delphi-Referenz durchsuchenWriteBool? Dann verkürzt sich der Code etwas:
Delphi-Quellcode:
start1.checked := not start1.checked;
  ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+ 'config.ini');
  ini.WriteBool('Drive O+C','Start mit Windows',start1.Checked);
  ini.free;
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Problem mit lesen aus einer INI

  Alt 9. Mär 2005, 18:56
Hi,

ich hab dir das ganze mal optimiert. So solltest Du es immer schreiben, dann behälst Du auch den Überblick

Delphi-Quellcode:
var
  ini: TIniFile;
  a: Boolean;
  Reg: TRegistry;
begin
  start1.checked := not start1.checked;
  Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'config.ini');
  try
    Ini.WriteBool('Drive O+C', 'Start mit Windows', Start1.Checked);
  finally
    Ini.Free;
  end;
  ini := TIniFile.Create('config.ini'); // ExtractFilePath(ParamStr(0)) ?
  Reg := TRegistry.Create;
  try
    A := Ini.ReadBool('Drive O+C','Start mit Windows', false);
    Reg.RootKey := HKEY_CURRENT_USER;
    if (not Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',
      True)) then Exit;
    if A then
      R.WriteString('Drive O+C', ParamStr(0)) else
    R.DeleteValue('Drive O+C');
    Reg.CloseKey;
  finally
    Ini.Free;
    Reg.Free;
  end;
end;
Vielleicht hilft Dir das ganze ja weiter

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Problem mit lesen aus einer INI

  Alt 9. Mär 2005, 18:58
Zitat:
@ Binärbaum : es steht trotzdem nicht 'nein' im label...
Das habe ich ja auch ncht behauptet. Ich meinte nur, dass dadurch die Compilermeldungen verschwinden sollten. Außerdem kann ich dem Quelltext keine Zeile sehen, wo
Label3.Caption:= 'nein'; steht. Das heißt, dass es wohl auch nie erscheinen wird, wenn diese Eigenschaft nicht schon vorher gesetzt wurde.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
fisherman_b

Registriert seit: 4. Mär 2005
Ort: Aachen
21 Beiträge
 
RAD-Studio 2009 Arc
 
#9

Re: Problem mit lesen aus einer INI

  Alt 9. Mär 2005, 18:59
Ich finde die ursprünglich verwendetet Einrückung völlig in Ordnung. Wenn man sie durchgängig benutzt, sieht man so schon auf den ersten Blick - also ohne logische Überprüfung - die fehlenden 'end's, im Gegensatz zum Beispiel mit gleicher Einrückung bei unterschiedlichen begin-Ebenen.

Gruss,

Bernhard
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Problem mit lesen aus einer INI

  Alt 9. Mär 2005, 19:02
ich schreibe auch immer so wie david. nur zu empfehlen - hatte noch nie probleme mit blöcken.

Aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:52 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