Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   DBEdit und Edit vergleichen (https://www.delphipraxis.net/169289-dbedit-und-edit-vergleichen.html)

blondervolker 10. Jul 2012 07:25

Datenbank: Abs • Version: 7 • Zugriff über: Delphi

DBEdit und Edit vergleichen
 
Morgen,Morgen

ich möchte in einer Absolute Database eine Festplattennummer speichern.
Das geht wunderbar.Ich möchte aber nicht,dass einer den gesamten Ordner
auf einen anderen Rechner kopiert und somit eine weitere Lizenz hat.
(Habe eine Software von einer Firma,dort gehts aber):cyclops:

Habe den gesamten Ordner auf einen anderen PC rübergenommen.Beim Start
wird mir auch die Seriennummer von dem vorherigen Rechner angezeigt und die vom Neuen-PC.

Mein Problem ist der Seriennummervergleich.

Im Edit sehe ich die Neue SN und im DBEdit die alte SN.

Kann bitte jemand helfen...Ich bin bald am verzweifeln :oops:

Hier der Code von Form Activate:
Delphi-Quellcode:
procedure TForm27.FormActivate(Sender: TObject);

begin
DBEdit1.DataSource.DataSet.Edit;
DBEdit2.DataSource.DataSet.Edit;
DBEdit3.DataSource.DataSet.Edit;
DBEdit4.DataSource.DataSet.Edit;

DBEdit2.Field.Value := DBEdit2.Field.AsFloat + DBEdit1.Field.AsFloat;
if DBEdit2.Text = '30' then DBEdit3.Text := '30';
if DBEdit3.Text = '30' then Label3.Caption:='Leider ist der Testzeitraum beendet!';
if DBEdit3.Text = '30' then ADvGlassButton1.Visible:=False;
if DBEdit3.Text = '30' then Edit1.Visible:=False;
if DBEdit3.Text = '30' then Label1.Visible:=False;
if DBEdit3.Text = '30' then DBText2.Visible:=False;
if DBEdit3.Text = '30' then AdvCircularProgress1.Visible:=False;
DBEdit2.DataSource.DataSet.Post;
//Abfrage ob DB existiert
if not FileExists(ExtractFilepath(ParamStr(0)) + 'serv.abs') then
  ShowMessage('Sie haben versucht dieses Programm zu manipulieren!')
end;

Hier der Code von Form Create:

Delphi-Quellcode:
procedure TForm27.FormCreate(Sender: TObject);
const
   screenwidthdev = 1280; // Einstellungen auf dem Entwicklungsrechner
   screenheightdev = 720; // Einstellungen auf dem Entwicklungsrechner
var
   x,y:integer;
   volName, fsName: array[0..255] of char;
  serNum, maxLen, Flags : Cardinal;

begin
   scaled := true;
   x:= Screen.width;
   y:= Screen.Height;
   if(y <> ScreenHeightDev) or (x <> ScreenwidthDev) then
     begin
        Form27.Height := (Form27.ClientHeight* y div ScreenHeightDev) +
                                Form27.Height- Form27.ClientHeight;
        Form27.Width := (Form27.ClientWidth * x div ScreenWidthDev) +
                                Form27.Height - Form27.ClientHeight;
        scaleBy(x,Screenwidthdev);
        end;
//Seriennummer
FillChar(volName, SizeOf(volName), 0);
  FillChar(fsName, SizeOf(fsName), 0);
  if GetVolumeInformation(PChar('C:\\'), volName, SizeOf(volName), @serNum, maxLen, Flags, fsName, SizeOf(fsName))
  then
  begin
  DBEdit4.Text:= IntToHex(serNum, 12);//erst waren es 8 Nummern
  Edit2.Text:= IntToHex(serNum, 12);
//Ende Seriennummer auslesen



//SN vergleichen
if DBEdit4.Text = Edit2.Text then Form27.Show
else begin
if DBEdit4.Text <= Edit2.Text then ShowMessage('Das ist nicht der Installations-PC!Kaufen Sie sich eine Lizenz!')
else begin
if DBEdit4.Text >= Edit2.Text then ShowMessage('Das ist nicht der Installations-PC!Kaufen Sie sich eine Lizenz!')
else begin
if DBEdit4.Text <= Edit2.Text then Form27.Close
else begin
if DBEdit4.Text >= Edit2.Text then Form27.Close
end;
 end;
  end;
end;
end;
end;

Furtbichler 10. Jul 2012 07:28

AW: DBEdit und Edit vergleichen
 
Gib deinen Komponenten erst einmal aussagekräftige Bezeichner.
Dann verwende begin..end an allen sinnvollen Stellen und...
... formatiere deinen Code.

Bummi 10. Jul 2012 07:32

AW: DBEdit und Edit vergleichen
 
:cyclops:
sorry, aber das ist unterirdisch ...

blondervolker 10. Jul 2012 07:36

AW: DBEdit und Edit vergleichen
 
das mag sein.Meine Frage war nur DBEdit und Edit vergleichen.

Bin kein Profi.:oops:

mkinzler 10. Jul 2012 07:43

AW: DBEdit und Edit vergleichen
 
Was ist genau dein Problem?

blondervolker 10. Jul 2012 07:49

AW: DBEdit und Edit vergleichen
 
Ich möchte nur,wenn im DBEdit4 die alte gespeicherte SN-Nr. vom PC1 und im Edit2 die SN-Nr. vom PC2 die ja neu abgefragt wird vergleichen.
Wenn diese nicht stimmt,Form Close etc.

(Ich komm nicht klar mit der Abfrage größer,kleiner usw.:oops:

Delphi-Quellcode:
//SN vergleichen
if DBEdit4.Text = Edit2.Text then Form27.Show
else begin
if DBEdit4.Text <= Edit2.Text then ShowMessage('Das ist nicht der Installations-PC!Kaufen Sie sich eine Lizenz!')
else begin
if DBEdit4.Text >= Edit2.Text then ShowMessage('Das ist nicht der Installations-PC!Kaufen Sie sich eine Lizenz!')
else begin
if DBEdit4.Text <= Edit2.Text then Form27.Close
else begin
if DBEdit4.Text >= Edit2.Text then Form27.Close
end;

mkinzler 10. Jul 2012 07:56

AW: DBEdit und Edit vergleichen
 
Es gibt doch eigentlich nur 2 Fälle Gleichheit oder nicht.
Delphi-Quellcode:
if DBEdit4.Text = Edit2.Text then
begin
     Form27.Show;
end
else
begin
    ShowMessage('Das ist nicht der Installations-PC!Kaufen Sie sich eine Lizenz!');
    Form27.Close;
end;

spaxxn 10. Jul 2012 08:00

AW: DBEdit und Edit vergleichen
 
mkinzler hat recht. Anmerken könnte man noch, dass SameText einen Vergleich ermöglicht, der Case-Insensitive ist...

DeddyH 10. Jul 2012 08:02

AW: DBEdit und Edit vergleichen
 
Und anstatt auf irgendwelche Controls zuzugreifen sollte man besser die dahinterliegenden Daten vergleichen.

blondervolker 10. Jul 2012 08:16

AW: DBEdit und Edit vergleichen
 
Danke!!!

Hab's probiert.Aber es funktioniert noch nicht.Es passiert garnichts.:oops:
Muss ich vielleicht noch die ADOTabl1 in den Edit Modus versetzen?

mkinzler 10. Jul 2012 08:23

AW: DBEdit und Edit vergleichen
 
Du willst die gespeicherte Seriennummer doch nicht ändern. Schau dir den Code doch mal im Debugger an.

Sir Rufo 10. Jul 2012 08:51

AW: DBEdit und Edit vergleichen
 
Die Anzahl der Fehler pro Zeile bei diesem gebotenen Quelltext liegt irgendwie bei 60%. Und wenn man die Copy-Paste Teile mal abzieht dann bei gefühlten 90%. Die Formatierung - so schlecht wie die ist - ist aber hier nur das geringste Übel und würde wohl auch keine weiteren positiven Erkenntnisse bringen.

Hier mal nur ein paar kleinere Hinweise:
  1. Im FormCreate soll die Form auch schon angezeigt werden
  2. Im FormCreate erfolgt der Zugriff auf die Instanz über die globale Variable Form27
  3. Alle mit den DBControls verbundenen DataSets werden in den Edit-Modus gesetzt (sicher ist sicher) aber nur für ein Control wird der Edit-Modus auch per Post abgeschlossen
  4. Nachdem alle Aktivitäten mit der Datenbank erledigt sind, wird geprüft, ob es diese Datenbank überhaupt gibt

mE mangelt es hier nicht nur an den Grundlagen Delphi, sondern an Logik im Allgemeinen.

blondervolker 10. Jul 2012 10:36

AW: DBEdit und Edit vergleichen
 
Danke für die Tipps.
Hab mir alles nochmal angeschaut.Da haste recht gehabt.:oops:
Hab gleich alles geändert.

Darum gibt es auch den Spruch "Dumm und Dümmer".:-D:-D:-D

Hat aber den tollen Effekt.

Jetzt funktioniert es!:cyclops:

Tschau und Danke

DeddyH 10. Jul 2012 10:38

AW: DBEdit und Edit vergleichen
 
Da lohnt wieder ein Blick in Sir Rufos Signatur :mrgreen:

blondervolker 10. Jul 2012 12:07

AW: DBEdit und Edit vergleichen
 
Ja,Ja:mrgreen:

Mit Delphi ist es so ähnlich, wie mit dem laufen lernen.

mrgreen::thumb:

Wer nicht läuft,der fällt nicht hin.

p80286 10. Jul 2012 12:29

AW: DBEdit und Edit vergleichen
 
Aber Du hast die Chance Dir vorher zu überlegen wohin Du laufen willst, und was auf Deinem Weg passieren kann. Diese Chance solltest Du ergreifen, und auch wenn es schon hundert mal gesagt wurde, das Formatieren von Sourcecode hilft ungemein bei der Fehlersuche.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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 by Thomas Breitkreuz