AGB  ·  Datenschutz  ·  Impressum  







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

INI-Eintrag vergleichen?

Ein Thema von Störtebeker · begonnen am 24. Jan 2008 · letzter Beitrag vom 16. Feb 2008
Antwort Antwort
Seite 2 von 3     12 3      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#11

Re: INI-Eintrag vergleichen?

  Alt 30. Jan 2008, 22:32
Zitat von Apollonius:
In Pascal-Dialekten werden Vergleiche mit '=' durchgeführt, nur Zuweisungen mit ':='.
Er wollte dir damit lediglich sagen, dass das eine AND da nicht hingehört. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#12

Re: INI-Eintrag vergleichen?

  Alt 30. Jan 2008, 22:37
Moin, Moin.

Ist der Fehler nicht hier zu suchen:
Zitat:
if
Edit1.Text:=Ini.ReadString('User', 'Name', '') AND
Edit2.Text:=Ini.ReadString('Password', 'Password', '')
then begin
Es muss doch so aussehen...
Delphi-Quellcode:
if (Edit1.Text=Ini.ReadString('User', 'Name', '')) AND
   (Edit2.Text=Ini.ReadString('Password', 'Password', '')) then begin
          //...
          //..
oder?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Störtebeker
Störtebeker

Registriert seit: 9. Jul 2007
398 Beiträge
 
#13

Re: INI-Eintrag vergleichen?

  Alt 30. Jan 2008, 22:46
Danke, taaktaak. Jetzt startet das Programm schonmal, aber es scheint jetzt einen anderen Fehler zu geben, denn nun wird mir die folgende Fehlermeldung "vor die Augen geworfen":

Zitat:
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at adress 004536AA in module Project1.exe' Read of adress...
Wat nu?
"And he piled upon the whale´s white hump - a sum of all the rage and hate felt by his whole race.
If his chest had been a cannon, he would have shot his heart upon it."
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#14

Re: INI-Eintrag vergleichen?

  Alt 31. Jan 2008, 09:46
Moin, Moin.

Na, die Fehlermeldung war schon zu erwarten...

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject;);
var
  Ini: TIniFile;
begin
if
Edit1.Text:=Ini.ReadString('User', 'Name', '') AND
Edit2.Text:=Ini.ReadString('Password', 'Password', '')
then begin
Form4.ShowModal;
Form2.Hide;
Form1.hide;
end;
end;
In deinem letzten Codeschnipsel fehlen das INI.Create und die try-finally-Abschnitte. Schau mal in die vorherigen Texte, da steht eigentlich alles drin...
Gruß Ralph
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Störtebeker
Störtebeker

Registriert seit: 9. Jul 2007
398 Beiträge
 
#15

Re: INI-Eintrag vergleichen?

  Alt 31. Jan 2008, 16:18
Erstmal Danke für die Hinweise. Jetzt aber nochmal eine Verständnisfrage:

Ich will ja aus der INI lesen, dass heißt, sie ist bereits vorhanden. Und trotzdem das "Ini.Create"??

Code:

Delphi-Quellcode:
 procedure TForm2.Button1Click(Sender: TObject);
var
  Ini: TIniFile;
begin
//If
Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'ua44.ini');
try
(Edit1.Text=Ini.ReadString('User', 'Name', '')) AND
(Edit2.Text=Ini.ReadString('Password', 'Password', ''))
finally
FreeAndNil(Ini);
end;
//then begin
Form4.ShowModal;
Form2.Hide;
Form1.hide;
end;
So, nun die Frage, wie ist das mit dem IF, hier als "Kommentar" hinzugefügt

Wie ich vielleicht vorher hätte sagen sollen, sind die INIs "Neuland" für mich und daher muss ich öffters mal nachfragen.
Naja, das mit dem Erstellen der INI mit "WriteString..." ging zwar gnz gut. Aber jetzt beim Auslesen hängt es halt. SRY.
"And he piled upon the whale´s white hump - a sum of all the rage and hate felt by his whole race.
If his chest had been a cannon, he would have shot his heart upon it."
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#16

Re: INI-Eintrag vergleichen?

  Alt 31. Jan 2008, 16:20
Zitat von Störtebeker:
P.S.:
Gibt es in der DP eigentlich eine Rubrik, wo häufige Fehler beschrieben sind, um solche Fragen auszuschließen?
Klar
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#17

Re: INI-Eintrag vergleichen?

  Alt 31. Jan 2008, 16:21
TIniFile ist eine Klasse und muss daher erst instanziiert werden, deshalb ist das Create notwendig.

[edit] @Manuel , Spaßvogel [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#18

Re: INI-Eintrag vergleichen?

  Alt 31. Jan 2008, 18:31
Zitat von Störtebeker:
Erstmal Danke für die Hinweise. Jetzt aber nochmal eine Verständnisfrage:

Ich will ja aus der INI lesen, dass heißt, sie ist bereits vorhanden. Und trotzdem das "Ini.Create"??
Naja, da es sich bei Delphi um eine Objekt orientierte Sprache handelt, gibt es Objekte, die Dinge auslagern und kapseln, damit der Programmierer nachher sich nur noch um seine Arbeit kümmern muss.
Nun wenn du "Ini : TIniFile" deklarierst, dann sagst du damit Delphi, dass hier ein Objekt ist. Normalerweise zeigt dieses Objekt aber ins nil (not in list, oder auch latein für "nichts"). Deshalb muss du das Objekt erstellen.
Du kannst dir das so vorstellen, wir haben 2 GB (oder mher, je nach Betriebssystem) Knetmasse ^^, den sogenannten Arbeitsspeicher.
Und du hast eine Schablone oder Form, das sogenannte TIniFile.
Und für die Variable haben wir einen Teller.
Nun ist der Teller beim Programmstart normalerweise leer (nur abgeswaschen muss er nicht sein ).
Wenn du nun z.B. die Farbe oder die Besonderheiten wissen willst, bekommst du eine EAccessViolation ("Zugriffsverletzung"), da du nicht auf die Eigenschaften zugreifen kannst.
Deshalb erstellst du dein Objekt.
Also nimmst du dir einen Klumpen Arbeitsspeicher und stechst das aus mithilfe der Form.
Das ist das erstellen eines Objektes: <Objektvariable> := <Objektklasse>.Create[...]
Jetzt kannst z.B. die Knete anmalen, oder verzieren.

Das heißt, ein TIniFile.Create heißt nicht zwingend das die Datei erstellt wird, sondern, dass das Objekt erstellt wird.

Übrigens die Sache wegen der Zwei Formulare.

Da kannst du verschiedenen Ansätzen folgen, welche aber an sich ähnlich sind:
Und zwar testest du, bevor du etwas erstellst, ob die Datei existiert.

Ich hätte es jetzt im Projektcode gemacht.
Also Quelltext des Projektes öffnen, und dann sollte dort sowas stehen:
Delphi-Quellcode:
begin
  Application.Initialize;
  [...]
  Application.Run;
end;
Dort musst du nun einsteigen:
Delphi-Quellcode:
begin
  Application.Initialize;
  // Alles was hier stand auskommentieren!

  // Nun testen, ob die Datei vorhanden ist:
  if FileExists(...) then
  // Wenn die Datei existiert: Loginfenster erstellen
    Application.FormCreate({Hier musst du nun Form1 o.ä. reinschreiben}, {Hier das ganze mit einem T davor})
  else
  // Ansonsten das Registierungsfenster erstellen
    Application.FormCreate({Hier musst du nun Form1 o.ä. reinschreiben}, {Hier das ganze mit einem T davor})
  Application.Run;
end;
FileExists benötigt SysUtils, also müssen wir die unter Uses einbinden:
Delphi-Quellcode:
uses
  SysUtils,
  [...];
Übrigens könnten manche sagen, das sein nicht perfekt, aber ich denke es ist verständlichsten, was wohl eher das Problem ist.

Application.FormCreate macht übrigens was ähnliches wie du bei TIniFile machen musst:
<Erster Übergabeparamter> := <Zweiter Übergabeparameter>.Create([...]); Diese Funktion mach aber darüberhinaus auch ein paar andere sachen

Nun sollte es funktionieren.
Aber nicht vergessen: Das, was du vorher hattest, dann löschen (oder wenn du dir nicht sicher bist: auskommentieren).

MfG
xZise

PS: Ich hoffe ich konnte helfen!
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von Störtebeker
Störtebeker

Registriert seit: 9. Jul 2007
398 Beiträge
 
#19

Re: INI-Eintrag vergleichen?

  Alt 31. Jan 2008, 21:27
Danke, xZise für die deine Idee, wird dadurch möglicherweise auch mein Problem mit dem "Cannot change visible..." gelöst?

Dank der vielen hilfreichen Tipps funktioniert das mit der INI mitlerweile.

Das einzige was jetzt noch stört ist der besagte Fehler mit dem "Visible"
"And he piled upon the whale´s white hump - a sum of all the rage and hate felt by his whole race.
If his chest had been a cannon, he would have shot his heart upon it."
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#20

Re: INI-Eintrag vergleichen?

  Alt 31. Jan 2008, 22:17
Zitat von Störtebeker:
Danke, xZise für die deine Idee, wird dadurch möglicherweise auch mein Problem mit dem "Cannot change visible..." gelöst?
Jap genau:
Du erstellst nämlich nur die Form, die du benötigst

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 19:25 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