![]() |
Hi, ich hab in die procedure von oncreate folgenden Code jetzt drinn:
Code:
Weiters:
procedure TKundendaten.FormCreate(Sender: TObject);
begin if (not CheckCode(IntToStr(a), 25, 7)) then RegisterApp(..) else Application.Terminate; end; procedure RegisterApp; begin.... ..... end; Ist das richtig so? Ich bekomme jetzt bei dem FormCreate folgende Fehlermeldung: [Fehler] Hauptmenue.pas(365): Undefinierter Bezeichner: 'RegisterApp' und bei Procedure RegisterApp bekomme ich jetzt auch einige fehlermeldungen |
Na ja. Nicht sehr übersichtlich. Ich würde wie gesagt in OnCraete überprüfen und dann die In-die-Regsitry-schreib-Prozedur aufrufen.
|
Code:
private
{blablabla} procedure RegisterAPP; ... ... ... procedure TForm1.RegisterApp; begin ...; ...; end; |
Hi, ich habe deinen Code von 'thomasdrewermann' jetzt drinn. Nun kommen folgende Fehlermeldungen:
if CheckCode(StrToInt(serial), 25, 7)=true then [Fehler] Hauptmenue.pas(387): Inkompatible Typen: 'String' und 'Integer' if CheckCode(a,25, 7)= false then [Fehler] Hauptmenue.pas(400): Inkompatible Typen: 'String' und 'Integer' if CheckCode(strtoint(serial),25, 7)=true then [Fehler] Hauptmenue.pas(406): Inkompatible Typen: 'String' und 'Integer' Was muß ich da noch beachten? |
Da passen irgendwo die Datentypen nicht zusammen. Mehr kann ich im Moment auch nicht sagen.
|
Hallo m-werk,
ich habe die Procedure CheckCode zwar damals geschrieben, bin aber nicht mehr ganz sicher, wie der erste Parameter deklariert war. Ich glaube aber er ist ein String. Deshalb kannst du "serial" einfach pübergeben, ohne ihn in ein Integer umzuwandeln. Das gleiche gibt für a. In beiden Fällen kannst du StrToInt einfach weglassen. |
Hier noch mal ein konkreter Code:
Code:
procedure TForm1.FormCreate(Sender: TObject);
var OK: Boolean; reg:tregistry; a:integer; serial:string; begin REG := TRegistry.Create; try try REG.RootKey := HKEY_CURRENT_USER; if REG.OpenKey('\Software\SELF', True) then begin if REG.ValueExists('CODE??') then a:=StrToInt(REG.ReadString('CODE??')) else a := 0; REG.CloseKey; end; except a := 0; end; finally REG.Free; if a=0 then begin serial:=inputbox('Seriennummer','Bitte geben sie ihre Seriennummer ein:','1234-1324-234'); if serial ='' then application.Terminate else begin if CheckCode(serial,25, 7)=true then begin reg:=tregistry.Create; reg.RootKey:=HKEY_CURRENT_USER; if reg.OpenKey('\Software\SELF',True) then begin reg.WriteString('CODE??',serial); reg.free; end; end; end; end else begin if CheckCode(inttostr(a),25, 7)= false then begin serial:=inputbox('Seriennummer','Bitte geben sie ihre Seriennummer ein:','1234-1324-234'); if serial ='' then application.Terminate else begin if CheckCode(serial,25, 7)=true then begin reg:=tregistry.Create; reg.RootKey:=HKEY_CURRENT_USER; if reg.OpenKey('\Software\SELF',True) then begin reg.WriteString('CODE??',serial); reg.free; end; end else application.Terminate; end; end; end; end; end; |
@Thomas: Nur mal so eine Frage am Rande: Warum hörst du auf hinter finally deinen Code zu formatieren?
|
Ein formatierter Code für Luckie :wink: :
Code:
Ich weiss ja nocht wie gross dein Monitor ist auf meinen passt der Code manchmal garnicht in eine Zeile :D
procedure TForm1.FormCreate(Sender: TObject);
var OK: Boolean; reg:tregistry; a:integer; serial:string; begin REG := TRegistry.Create; try try REG.RootKey := HKEY_CURRENT_USER; if REG.OpenKey('\Software\SELF', True) then begin if REG.ValueExists('CODE??') then a:=StrToInt(REG.ReadString('CODE??')) else a := 0; REG.CloseKey; end; except a := 0; end; finally REG.Free; if a=0 then begin serial:=inputbox('Seriennummer','Bitte geben sie ihre Seriennummer ein:','1234-1324-234'); if serial ='' then application.Terminate else begin if CheckCode(serial,25, 7)=true then begin reg:=tregistry.Create; reg.RootKey:=HKEY_CURRENT_USER; if reg.OpenKey('\Software\SELF',True) then begin reg.WriteString('CODE??',serial); reg.free; end; end; end; end else begin if CheckCode(inttostr(a),25, 7)= false then begin serial:=inputbox('Seriennummer','Bitte geben sie ihre Seriennummer ein:','1234-1324-234'); if serial ='' then application.Terminate else begin if CheckCode(serial,25, 7)=true then begin reg:=tregistry.Create; reg.RootKey:=HKEY_CURRENT_USER; if reg.OpenKey('\Software\SELF',True) then begin reg.WriteString('CODE??',serial); reg.free; end; end else application.Terminate; end; end; end; end; end; MFG Thomas |
Laut Borland StyleGuide soll man mit zwei Leerzeichen einrücken. Und nicht mit Tabulatoren, hat die nämlich jemand anders eingestellt, ist die Codeformatierung wieder hinüber, was bei Leerzeichen logischerweise nicht passiert.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz