Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ? (https://www.delphipraxis.net/213658-delphi-7-bde-32-bit-wie-eine-datenbank-und-oder-alias-erstellen.html)

paule32.jk 3. Sep 2023 13:26

Datenbank: BDE • Version: 5.01 • Zugriff über: BDE

Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Hallo,

Bitte jetzt nicht Lachen - ich weiß, BDE ist Tot, auch das Delphi 7, aber trotzdem die Frage(n):

- ich möchte eine BDE-Datenbank erstellen, okay
- dazu brauche ich Admin-Rechte, okay
- die/der BDE-Administration läuft, okay (getestet, und okay)
- manuell kann ich neue Datenbanken anlegen
- ich verwende als Treiber: STANDARD
- ich verwende als Tabellen-Typ: DBASE/PARADOX
- ich kann manuell Pfade zu den Bestandsdatendateien setzen
- die einzelnen .dbf Dateien können dann auch angesprochen, und angezeigt werden

- leider schaffe ich es nicht, Datenbanken per Code, während der Laufzeit zu erzeugen
- auch, nachdem das mein Programm im Admin-Modus gestartet wurde, wird die Datenbank
nicht angelegt
- den folgenden Code habe ich für meine Versuche verwendet
Delphi-Quellcode:
procedure foo;
var
  BDE_found : Boolean;
  BdeAdmin  : TDataBase;
begin
  BDEAdmin := TDataBase.Create(nil);
  BDE_found := false;
  try
    try
      BDEAdmin.AliasName   := 'DataBaseName';
      BDEAdmin.DatabaseName := 'DataBaseName';
      BDEAdmin.DriverName  := 'STANDARD';
      BDEAdmin.Open;

    except
      on E: EDBEngineError do
      begin
        for i := 0 to E.ErrorCount - 1 do
        begin
          case E.Errors[i].ErrorCode of
            0: begin {no error} BDE_found := true; end;
            1: begin
                 ShowMessage('BDE Error:'
                 + #13#10 + 'Number: ' + IntToStr(E.Errors[i].ErrorCode)
                 + #13#10 + 'Message: ' + 'Database not found.');
               end;
            2: begin
                 ShowMessage('BDE Error:'
                 + #13#10 + 'Number: ' + IntToStr(E.Errors[i].ErrorCode)
                 + #13#10 + 'Message: ' + 'Error in BDE-Config.');
               end;
            3: begin
                 ShowMessage('BDE Error:'
                 + #13#10 + 'Number: ' + IntToStr(E.Errors[i].ErrorCode)
                 + #13#10 + 'Message: ' + 'Network BDE-Error.');
               end;
            4: begin
                 ShowMessage('BDE Error:'
                 + #13#10 + 'Number: ' + IntToStr(E.Errors[i].ErrorCode)
                 + #13#10 + 'Message: ' + 'Access Table or Folder Problem.');
               end;
            5: begin
                 ShowMessage('BDE Error:'
                 + #13#10 + 'Number: ' + IntToStr(E.Errors[i].ErrorCode)
                 + #13#10 + 'Message: ' + 'Internal BDE-Error');
               end;
            else begin
              ShowMessage('BDE Error:'
              + #13#10 + 'Number: ' + IntToStr(E.Errors[i].ErrorCode)
              + #13#10 + 'Message: ' + E.Errors[i].Message);
            end;
          end;
        end;

        if not(BDE_found) then
        begin
          BDEAdmin.Free;
          BDEAdmin := nil;
          Close;
        end;
      end;
      on E: Exception do
      begin
        ShowMessage('Exception Error:'
        + #13#10 + 'Class: '  + E.ClassName
        + #13#10 + 'Message: ' + E.Message);
        BDEAdmin.Free;
        BDEAdmin := nil;
        Close;
      end;
    end
  finally
  ShowMessage('no errrror');
    BDEAdmin.Close;

      BDEAdmin.AliasName   := 'DataBaseName';
      BDEAdmin.DatabaseName := 'DataBaseName';
      BDEAdmin.DriverName  := 'STANDARD';
      BDEAdmin.Open;
// hier kommt auch kein Fehler
    BDEAdmin.Free;
    BDEAdmin := nil;
  end;
end;
hat dazu jemand eine Lösung ?

haentschman 3. Sep 2023 14:51

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallöle...8-)

Zitat:

Bitte jetzt nicht Lachen
...eher :cry:

Tu dir selber einen Gefallen. KEINE BDE, KEIN Paradox!. :warn:

Leichte Alternativen:
Firebird 3.0 (ist Ver. 4.0 schon brauchbar? :gruebel:): Moderne Datenbank mit SQL. Klein aber fein. :cheer:
https://firebirdsql.org/en/firebird-3-0/ Download: "Firebird-3.0.11.33703_0_x64.exe"
Mit einem 32Bit Programm kann man auch auf den 64Bit Server connecten. :zwinker: Firebird kann sowohl mit einem Server MultiUser oder auch Embedded einzeln. Das regelt der Connectionstring. :zwinker:

Zugriffskomponenten FREE:
ZEOS: Version 7.2 unterstützt D7 https://sourceforge.net/projects/zeo...7.2.14-stable/

1. Download Firebird.
2. Install Frebird
3. Download ZEOS
4. Install ZEOS

...dann melde dich wieder. :wink:

PS:
Ich designe die Datenbanken immer mit einem Admin Tool. Die Datenbank zur Laufzeit erzeugen (per SQL) geht, ist aber imho nicht das gelbe vom Ei. :zwinker:
Admin Tool: DBeaver Community https://dbeaver.io/download/

mytbo 3. Sep 2023 15:47

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Als Ergänzung zum Beitrag von Andreas der Verweis auf mORMot (Delphi 7 kompatibel). Die Bibliothek kann viele Datenbanken ansprechen. In deinem Fall dürft SQLite (embedded) eine gute Wahl sein. Der schnelle Einstieg ist in diesem Artikel beschrieben. mORMot muss nicht in der IDE installierten werden! Es reicht aus, die Bibliothek mit den Static-Dateien in ein Verzeichnis zu kopieren und die entsprechenden Bibliothekspfade anzulegen. In 3 Minuten ist es auf dem Rechner und bei Nichtgefallen in 3 Sekunden wieder spurlos entfernt. Es stehen viele Beispiele und ein freundliches Forum zur Verfügung.

Bis bald...
Thomas

Delphi.Narium 3. Sep 2023 16:13

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
@paule32.jk

Du erstellst mit dem Code auch keine Datenbank, sondern allenfalls nur eine Verbindung zu einer nicht existierenden Datenbank.

Du musst dann mindestens auch eine Tabelle erstellen. Für die BDE unter Delphi 7 kannst Du da die Komponente TTable nutzen. Dort im Objektinstektor oder per Code die Spalten definieren, bei Bedarf den einen oder anderen Index anlegen, den Tabellennamen vergeben, TDataBase-Komponenten zuweisen und dann die Tabelle erstellen.

Delphi-Quellcode:
if not Table1.Exists then Table1.CreateTable;
Danach sollte dann eine Tabelle in Deiner "Datenbank" enthalten sein. Per SQL geht's auch über die Komponente TQuery.

Da Paradox und DBase dateibasierte "Datenbanken" sind, können sie nicht "erstellt" werden. Sie bestehen praktisch nur aus einem Verzeichnis auf der Festplatte. Und solange noch keine Tabelle erstellt wurde, muss auch dieses Verzeichnis nicht existieren. Eigentlich ist eine Paradox- bzw. DBase-Datenbank nichts weiter als ein Verzeichnis auf 'nem Datenträger mit einer mehr oder weniger großen Anzahl von Paradox- bzw. DBasedateien. Eine Datenbank im eigentlichen Sinne gibt es hier nicht.

Du machst also quasi alles richtig, im Programm besteht nur eine TDataBase-Komponenten die auf die Möglichkeit einer potenziellen Datenbank hinweist.

Uwe Raabe 3. Sep 2023 16:51

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Ist ja schon eine ganze Weile her (daher: keine Garantie!), aber ich wenn ich mich recht erinnere musst du dazu
Delphi-Quellcode:
BDEAdmin.Session.AddStandardAlias(<AliasName>, <DataBasePath>, '');
aufrufen. Der Alias ist dann aber permanent und ein weiterer Aufruf führt zu einem Fehler. Das kannst du aber mit
Delphi-Quellcode:
IsAlias
vorher prüfen.

Es ist aber in der Tat so, dass das ganze BDE-Gedöns ab Windows Vista nicht mehr so wirklich funktioniert, ohne dass man da ein paar unschöne Verrenkungen einbaut.

jaenicke 3. Sep 2023 18:47

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1526438)
Es ist aber in der Tat so, dass das ganze BDE-Gedöns ab Windows Vista nicht mehr so wirklich funktioniert, ohne dass man da ein paar unschöne Verrenkungen einbaut.

Oh ja, da habe ich seinerzeit einiges eingebaut...
- Hook für Festplattengrößenabfrage wegen 32-Bit Überlauf
- Drei Änderungen zur Laufzeit auf Assemblerebene in der idapi32.dll, damit es keine Zugriffsverletzungen gab, z.B. beim Beenden
- Eine größere Änderung in der idapi32.dll zur Initialisierung der SHARED_MEM_LOCATION
Dazu ein paar Konfigurationsanweisungen für Windows bei Nutzung von Dateifreigaben (LeasingMode für neue Versionen, Deaktivierung der OpLocks usw. für ältere, ...), dann lief die BDE echt gut. Aber die Verrenkungen und damit die BDE machen für neue Projekte keinerlei Sinn.

IBExpert 3. Sep 2023 18:54

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Zitat:

Zitat von haentschman (Beitrag 1526433)
ist Ver. 4.0 schon brauchbar? :gruebel:):

ja, eindeutig :-)

paule32.jk 4. Sep 2023 22:01

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Hallo,
Danke Euch für Euer Feedback !
Ich habe mir aber mal erlaubt, doch mal bissl rumzubasteln und zu stöpseln ...
Es geht mir ja auch dadrum, eine Datenbank zu Haben, die von unbedarften Usern
installiert werden kann - Ihr wisst ja - GAUF - Größter Anzunehmender User Fehler...
Man braucht auch keine Admin Rechte, um die Registry zu wursteln, aber ich habe mal
im Code eine Abfrage eingetragen - sicher ist sicher ...
nur mal so, ein Snippet:
Delphi-Quellcode:
function isAdmin: Boolean;
const
  DOMAIN_ALIAS_RID_ADMINS = $00000220;
  SECURITY_BUILTIN_DOMAIN_RID = $00000020;
  SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5));
var
  Admin: Boolean;
  AdmGroup: PSID;
Begin
  Admin := AllocateAndInitializeSid(SECURITY_NT_AUTHORITY,
    2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
    0, 0, 0, 0, 0, 0, AdmGroup);
  If (Admin) Then
  Begin
    If (not CheckTokenMembership(0, AdmGroup, Admin)) Then
      Admin := False;
    FreeSid(AdmGroup);
  end;
  Result := Admin;
end;

// -------------------------------------------------------------
// rs_xxx are the Locale's .ENU, .DEU files. default is: ENU ...
// -------------------------------------------------------------
resourcestring
  rs_Internal_Error  = 'internal error.';
  rs_BDE_notInstalled = 'No BDE Installation found !';
  rs_BDE_Error       = 'BDE Error:';
  rs_BDE_AppStart_Rej = 'Aborted start.';
  rs_App_First_Run   = 'You run this Application at first race !' + #13#10 +
                        'Would You do a Setup of needed Stuff ?';
  rs_App_User_Mode   = 'You run this Application with User rights !'     + #13#10 +
                        'If You confirm this Dialog with "Yes", it can be' + #13#10 +
                        'that the Application does not work.'             + #13#10 +
                        '' + #13#10 +
                        'Would You start the Application without Admin rights ?';
  rs_ClassName       = 'Class-Name: ';
  rs_Message         = 'Message: ';
  rs_Exception_Error = 'Exception Error:';
  rs_File_Exists     = 'The file already exists !' + #13#10  +
                        'Would you override the old Version ?';

  rs_BDE_EClassName  = 'Error-Class: ';
  rs_BDE_ECode       = 'Error-Code: ';
  rs_BDE_EMessage    = 'Error-Message: ';
  rs_BDE_EFile       = 'Error-File: ';
  rs_BDE_EModule     = 'Error-Module: ';
  rs_BDE_EProc       = 'Error-Proc: ';
  rs_BDE_ELine       = 'Error-Line: ';

  rs_BDE_Error_TableDontExists = 'Table does not exists.';
  rs_Win32_Registry_Error     = 'Win32-Registry Error:';

procedure TForm1.FormCreate(Sender: TObject);
const
  BDE_DLLs: array [0..2] of string = (
    'IDAPI32.DLL',
    'IDR20009.DLL',
    'IDR20009.DLL'
  );
  BDEAlias = 'DataBaseName';
  BDECoTbl = 'test.dbf';
  BDELevel = 0;
var
  I,J        : Integer;
  text       : WideString;
  xpos, ypos : Integer;
  row, col   : Integer;
  S          : String;
  B          : Boolean;
  BDE_found  : Boolean;
  Index      : Integer;
  reg        : TRegistry;
  H          : HDBISes;
  letter1     : Char;
  letter2     : Char;
  buffer     : Array[0..MAX_PATH] of Char;
  BDEList    : TStringList;
  BDESession : TSession;
  BdeAdmin   : TDataBase;
  BDETable   : TTable;
  BDEQuery   : TQuery;
  BDEDataSrc : TDataSource;
  SystemFolder: String;
  SQLstmt    : String;
  stmtParams : TParams;


  procedure FreeBDESetup;
  begin
    if Assigned(BDEList) then
    begin
      BDEList.Clear;
      BDEList.Free;
      BDEList := nil;
    end;

    if Assigned(BDEQuery) then
    begin
      BDEQuery.SQL.Clear;
      BDEQuery.Free;
      BDEQuery := nil;
    end;

    if Assigned(BDETable) then
    begin
      BDETable.Close;
      BDETable.Free;
      BDETable := nil;
    end;

    if Assigned(BDEAdmin) then
    begin
      BDEAdmin.Close;
      BDEAdmin.Free;
      BDEAdmin := nil;
    end;

    if Assigned(BDESession) then
    begin
      BDESession.Close;
      BDESession.DeleteAlias(BDEAlias);
      BDESession.Free;
      BDESession := nil;
    end;

    if Assigned(reg) then
    begin
      reg.Free;
      reg := nil;
    end;

    if Assigned(h) then
    begin
      DBICloseSession(h);
      DBIExit;
      h := nil;
    end;
  end;
begin
  // -------------------------------------------------
  // first, check if the BDE is installed.
  // one step is, to locate the BDE Win32 Registry key
  // second step, try to locate per path.
  // -------------------------------------------------
  BDE_found := true;
  reg := Tregistry.Create;
  try
    try
      reg.RootKey := HKEY_LOCAL_MACHINE;
      B := reg.OpenKeyReadOnly('SOFTWARE\Borland\Database Engine');
      if not(B) then
      begin
        GetSystemDirectory(buffer, SizeOf(buffer));
        SystemFolder := StrPas(buffer);

        for I := Low(BDE_DLLs) to High(BDE_DLLs) do
        begin
          if not FileExists(SystemFolder + '\' + BDE_DLLs[I]) then
          begin
            BDE_found := false;
            break;
          end;
        end;
      end
    except
      on E: Exception do
      begin
        ShowMessage(rs_Win32_Registry_Error
        + #13#10 + rs_ClassName + E.ClassName
        + #13#10 + rs_Message  + E.Message);
        FreeBDESetup;
        Close;
      end;
    end;
  finally
    FreeBDESetup;

    if not(BDE_found) then
    begin
      ShowMessage(
      rs_BDE_notInstalled + #13#10 +
      rs_BDE_AppStart_Rej);
      Close;
    end;
  end;

  // ------------------------------------
  // look, if database is present, if not
  // than try to create it ...
  // ------------------------------------
  BDEAdmin := TDataBase.Create(nil);
  BDE_found := false;
  try
    try
      S := ExtractFilePath(Application.ExeName);
      S := S + 'data';

      // -----------------------------------------
      // warn the user, if run with admin rights
      // if true then check data + password, else
      // continue as normal user.
      // -----------------------------------------
      if not(DirectoryExists(S)) then
      begin
        I := MessageDlg(rs_App_First_Run,
        mtWarning,[mbYes, mbNo],0);
        if I = mrNo then
        begin
          Close;
        end;
        if not(isAdmin) then
        begin
          I := MessageDlg(rs_App_User_Mode,
          mtWarning,[mbYes, mbNo],0);
          if I = mrNo then
          begin
            Close;
          end;
        end;

        CreateDir(S);
      end;

      // --------------------------------
      // check, if 'databasename' exists
      // --------------------------------
      if not(Assigned(BDEList)) then
      BDEList := TStringList.Create;
      BDEList.Clear;

      BDESession := TSession.Create(nil);
      BDESession.SessionName := BDEAlias;

      // no, then create it
      if BDEList.IndexOf(BDEAlias) < 0 then
      begin
        DBIInit(nil);
        DBIStartSession('dummy',h,'');
        DBIAddAlias(nil,
        PChar(BDEAlias),
        PChar('DBASE'),
        PChar('PATH=' + S),
        true);
        DBICloseSession(h);
        DBIExit;
        h := nil;
      end;

      // -------------------------------
      // sanity check ...
      // -------------------------------
      BDESession.Open;
      BDESession.GetDatabaseNames(BDEList);

      if BDEList.IndexOf(BDEAlias) < 0 then
      raise Exception.Create(
      'BDE Error:'  + #13#10 +
      'internal Error.');

      if not(Assigned(BDEAdmin)) then
      BDEAdmin := TDataBase.Create(nil);
      BDEAdmin.DatabaseName := BDEAlias;
      BDEAdmin.Directory   := S;
      BDEAdmin.Open;

      try
        // -------------------------------
        // check, if data table exists ...
        // -------------------------------
        BDEQuery := TQuery.Create(nil);
        BDEQuery.DatabaseName := BDEAlias;
        BDEQuery.SQL.Text :=
        'SELECT COUNT(*) AS TableCount ' +
        'FROM SYSALIASES A ' +
        'INNER JOIN TABLES T ON A.PATH = T.PATH ' +
        'WHERE A.ALIASNAME = ''' + BDEAlias + '''' + ' ' +
        'AND  T.TBLNAME  = ''' + S + '\' + BDECoTbl + '''' ;

        BDEQuery.Open;
      except
        on E: EDBEngineError do
        begin
          BDE_found := true;
          for I := 0 to E.ErrorCount - 1 do
          begin
            // table does not exists...
            if E.Errors[I].ErrorCode = 10024 then
            begin
              BDE_found := false;
              break;
            end;
          end;

          if not(BDE_found) then
          begin
            try
              BDEQuery.Close;

              BDEQuery.SQL.Clear;
              BDEQuery.SQL.Text :=
              'CREATE TABLE ''' + S + '\' + BDECoTbl + ''' (' +
              'COL1 int,' +
              'COL2 int)';

              BDEQuery.ExecSQL;
            except
              on E: EDBEngineError do
              begin
                for I := 0 to E.ErrorCount - 1 do
                begin
                  case E.Errors[I].ErrorCode of
                    0:
                    begin
                      // no error
                      break;
                    end;
                    10024,
                    13057:
                    begin
                      // table exists
                      break;
                    end else
                    begin
                      ShowMessage(rs_BDE_Error
                      + #13#10 + rs_BDE_EClassName + E.ClassName
                      + #13#10 + rs_BDE_ECode     + IntToStr(E.Errors[i].ErrorCode)
                      + #13#10 + rs_BDE_EMessage  + E.Errors[i].Message
                      + #13#10 + rs_BDE_EFile     + FileByLevel (BDELevel)
                      + #13#10 + rs_BDE_EModule   + ModuleByLevel(BDELevel)
                      + #13#10 + rs_BDE_EProc     + ProcByLevel (BDELevel)
                      + #13#10 + rs_BDE_ELine     + IntToStr(LineByLevel(BDELevel)));

                      FreeBDESetup;
                      Close;
                    end;
                  end;
                end;
              end;
            end
          end;
        end;
      end;

      // -------------------------------
      // sanity check ...
      // -------------------------------
      BDEList.Clear;

      BDEAdmin.DatabaseName := BDEAlias;
      BDEAdmin.Connected := true;

      if not(Assigned(BDESession)) then
      begin
        BDESession := TSession.Create(nil);
        BDESession.SessionName := BDEAlias;
      end;

      if not(Assigned(BDETable)) then
      BDETable := TTable.Create(nil);
      BDETable.DatabaseName := BDEAdmin .DatabaseName;
      BDETable.SessionName := BDESession.SessionName;
      BDETable.TableName   := S + '\test.dbf';

    except
      on E: EDBEngineError do
      begin
        for i := 0 to E.ErrorCount - 1 do
        begin
          case E.Errors[i].ErrorCode of
            0: begin {no error} BDE_found := true; end;
            else begin
              ShowMessage(rs_BDE_Error
              + #13#10 + rs_BDE_EClassName + E.ClassName
              + #13#10 + rs_BDE_ECode     + IntToStr(E.Errors[i].ErrorCode)
              + #13#10 + rs_BDE_EMessage  + E.Errors[i].Message
              + #13#10 + rs_BDE_EFile     + FileByLevel (BDELevel)
              + #13#10 + rs_BDE_EModule   + ModuleByLevel(BDELevel)
              + #13#10 + rs_BDE_EProc     + ProcByLevel (BDELevel)
              + #13#10 + rs_BDE_ELine     + IntToStr(LineByLevel(BDELevel)));
            end;
          end;
        end;

        FreeBDESetup;
        Close;
      end;
      on E: Exception do
      begin
        ShowMessage(rs_Exception_Error
        + #13#10 + rs_BDE_EClassName + E.ClassName
        + #13#10 + rs_BDE_EMessage  + E.Message
        + #13#10 + rs_BDE_EFile     + FileByLevel (BDELevel)
        + #13#10 + rs_BDE_EModule   + ModuleByLevel(BDELevel)
        + #13#10 + rs_BDE_EProc     + ProcByLevel (BDELevel)
        + #13#10 + rs_BDE_ELine     + IntToStr(LineByLevel(BDELevel)));

        FreeBDESetup;
        Close;
        exit;
      end;
    end
  finally
    FreeBDESetup;
  end;
end;

haentschman 5. Sep 2023 06:11

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Moin...8-)

...du hast nicht richtig gelesen / zugehört! :warn:
Zitat:

Es ist aber in der Tat so, dass das ganze BDE-Gedöns ab Windows Vista nicht mehr so wirklich funktioniert
.
.
.
Zitat:

Es geht mir ja auch dadrum, eine Datenbank zu Haben, die von unbedarften Usern installiert werden kann
Dann bist du mit er BDE erst Recht falsch! Die BDE muss auf jedem System, wo das Programm läuft, installiert sein.

Lösung: Firebird Embedded. :zwinker: Alternative: SQLite (kein MultiUser), andere DLL

* KEINE Installation der BDE beim Kunden...weil nicht gebraucht
* KEIN Registry Gedöns
* KEIN Admin Gedöns
* KEINE Serverinstallation nötig.
* Datenbank mit dem Programm mitliefern (eine Datei :thumb:)
* mitliefern der DLL "fbclient.dll"
...fertsch. 8-)

Laß von der BDE die Finger! :warn: Muß man dich zu deinem Glück zwingen? :zwinker:

:wink:

Fragen an dich (damit wir wissen welchen Kenntnisstand du hast):
* Unterschied Table und Query?
* was ist ein Index?
* was ist SQL?
* was ist SQL Injection? (für später)

jaenicke 5. Sep 2023 06:28

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Zitat:

Zitat von paule32.jk (Beitrag 1526472)
Es geht mir ja auch dadrum, eine Datenbank zu Haben, die von unbedarften Usern
installiert werden kann

Und deshalb möchtest du eine Datenbank haben, die ohne Adminrechte nicht installiert werden kann und unter neueren Betriebssystemen ohne manuelles Zutun der Nutzer nicht immer sauber läuft?

Statt einer Datenbank, die ohne Installation einfach so in deinem Anwendungsverzeichnis läuft? (Firebird Embedded)

HolgerX 5. Sep 2023 09:31

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Hmm..

oder (nicht bashen) mit den ADO-Komponenten von D7 eine (alte) ACCESS Datenbank per OLEDB.
Der alte OLEDB Treiber (Microsoft.Jet.OLEDB) für Access MDBs ist selbst bei Windos 11 noch per default installiert.

Somit kann aus dem Programm heraus eine MDB erzeigt werden und dann per SQL Tabellen...

Ergo:
- Keine Installation auf dem Client, die Anwendung kann als Portabel verwendet werden...
- Zwar besser nur SingleUse aber (eingeschränkt) auch von 2-3 Clients auf eine DB verwendbar..

paule32.jk 5. Sep 2023 10:42

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
@haentschman
Code:
Table = Ansammlung von (geordneten/strukturierten) Daten(sätzen),
         die per einzeln per Datensatz (Record) zur Verfügung stehen.
Query = Abfrage(sprache), mit denen Datensätze gesucht, gefiltert, geändert,
         werden können. Datensätze können aufgeteilt werden, so dass nicht die
         gesamten Daten (der Tabelle) in den Speicher des Client gehalten werden
         muss. Abfragen werden mit der Skript-Sprache SQL (Structured Query
         Language) eingeleitet/abgesetzt.
Index = Als primär-Index für das Suchen verwendet, um die Datenbanl-Anfrage(n)
         mittels SQL schneller, und eindeutig zu bestimmen.
         Bei Unter/Sub-Kategorien können dann auch sekundär-Indexe erstellt werden.
SQL   = Abfrage Skript-Sprache für Queries
Inject = Methoden, um SQL-Anfragen übers Netz zu manipulieren.
         Daher sollten alle Queries mit Parameter versehen werden.

haentschman 5. Sep 2023 10:50

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
:wink:

Der Unterschied zwischen Table und Query ist:

Im Prinzip sind TTable und TQuery alle TDataSet. Sie halten Daten.
Der Unterschied ist: Die TTable holt IMMER ALLE Daten (select * from table). Die TQuery holt über SQL NUR die Daten die benötigt werden. (select yy from table where yy = z)
Je größer die Tabelle, wird die TTable länger geladen...Heißt, daß das Mittel der Wahl immer die TQuery sein soll. :zwinker:

Du mußt dich auch dringend mit den "Bausteinen" einer Datenbank beschäftigen. (SQL, Indizies etc.) Die sind wichtig. :wink: Dann wird es einfacher.

Fürs Erste mußt du dich für eine Datenbank entscheiden. 8-) BDE fällt aus. :lol: Imho Access mit ADO auch. :thumb:

Tutorial SQL:
https://www.w3schools.com/sql/

johndoe049 5. Sep 2023 12:19

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Zitat:

Hallo,
Danke Euch für Euer Feedback !
Ich habe mir aber mal erlaubt, doch mal bissl rumzubasteln und zu stöpseln ...
Es geht mir ja auch dadrum, eine Datenbank zu Haben, die von unbedarften Usern
installiert werden kann - Ihr wisst ja - GAUF - Größter Anzunehmender User Fehler...
Man braucht auch keine Admin Rechte, um die Registry zu wursteln, aber ich habe mal
im Code eine Abfrage eingetragen - sicher ist sicher ...
nur mal so, ein Snippet:
Hast du das auf dem PC mit Delphi 7 getestet oder auch auf einem PC ohne Delphi?

Du kannst bei der BDE nur dann sicher sein, dass es funktioniert, wenn du einen PC ohne Delphi zum testen verwendet. Alles andere ist sinnfrei, weil es falsche Ergebnisse bringt. Man meint, die BDE kann heute noch problemlos verwendet werden, ist aber nicht so.

Delphi selbst sorgt schon dafür, dass die BDE richtig funktioniert.

Übrigens ist Delphi 7 nicht tot. Das funktioniert auch auf Windows 10 und Windows 11. Ist bei sehr alten Projekten noch hilfreich.

Zitat:

Table = Ansammlung von (geordneten/strukturierten) Daten(sätzen),
die per einzeln per Datensatz (Record) zur Verfügung stehen.
Query = Abfrage(sprache), mit denen Datensätze gesucht, gefiltert, geändert,
werden können. Datensätze können aufgeteilt werden, so dass nicht die
gesamten Daten (der Tabelle) in den Speicher des Client gehalten werden
muss. Abfragen werden mit der Skript-Sprache SQL (Structured Query
Language) eingeleitet/abgesetzt.
Index = Als primär-Index für das Suchen verwendet, um die Datenbanl-Anfrage(n)
mittels SQL schneller, und eindeutig zu bestimmen.
Bei Unter/Sub-Kategorien können dann auch sekundär-Indexe erstellt werden.
SQL = Abfrage Skript-Sprache für Queries
Inject = Methoden, um SQL-Anfragen übers Netz zu manipulieren.
Daher sollten alle Queries mit Parameter versehen werden.

Es geht nicht darum, das aus einem Lexikon abzuschreiben. Wir wollen wissen, ob du dich mit SQL auskennst und entsprechende Select, Insert, Updates, etc. erstellen kannst. Bei BDE ist SQL nicht bei allen Datenmodellen notwendig. Bei den xBase kompatiblen Formaten konnte man das früher auch über modellinterne Techniken realiseren. Das ist aber eine veraltete Technik, mit der keine aktuelle Datenbank (OK, vielleicht Access) mehr arbeitet. Spätestens, wenn du beruflich programmiert und noch weitere Programmmierer involviert sind, muss man SQL können.

Wenn du mit veralteten Datenmodellen arbeiten willst, sei es dir gegönnt. Nur wir arbeiten im Heute und nicht in der Vergangenheit.

QuickAndDirty 5. Sep 2023 12:38

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Nur um das mal ganz deutlich zu machen....
Die Installationsdateine für die BDE von Borland gibt es oft nur aus zweifelhaften Quellen.
Jeder User muss die haben.
Bei jeder Installation des Programms müssen die ausgeführt werden.
Mann sollte die nur als DER Domain Administrator ausführen.
Die BDE installiert die BDEAdmin.exe im IDAPI Verzeichniss.
Sollte diese Datei einemal ohne Domain Administrator zu sein und ohne UAC ausgeführt werden und man ausversehen speichern (OK beim beenden des Programms), dann ist die Registry der BDE kaput und man muss die BDE deinstallieren, die Registry Einträge löschen und die BDE dann neu installieren.

Die BDE/Paradox geht regelmäßig kaputt...dann muss man die Daten reorganisieren.
Nach einem Programm Absturz kann es sein, dass einige Tabellen weiterhin gelockt sind, dann muss man die P*.lck und P*.net löschen.
Nach einem Rechnerabsturz sind oft die Index Dateien kaputt -> Indexe neu aufbauen
Manchmal haben Tabellen abgespeicherte Keyviolations in der Datei auf dem Primary key und können nicht geöffnet werden.

USW USW USW

Wir haben die BDE noch Jahrelang am Leben gehalten, bei einigen Kunden bis heute! Das ist ein riesen Problem. Es ist mega aufwendig. Und die Menschen die sich mit diesem Dinosaurier auskennen werden auch weniger.
Ich will dich nicht bashen eher RETTEN. Dein Post fühlt sich so ein bisschen an wie wenn jemand um hilfe für seine Nitroglyzerinflaschen in seiner Silbermine fragt und alle sagen ihm: "Nimm doch bitte was anderes! TNT, Stickstoffdünger+Diesel, Plastik Sprengstoff, Nobel Dynamit...alles alles nur nicht das!"

Nochmals Entschuldigung.
Was soll ich sagen ? Bitte spring nicht?

jaenicke 5. Sep 2023 13:41

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Zitat:

Zitat von johndoe049 (Beitrag 1526488)
Delphi selbst sorgt schon dafür, dass die BDE richtig funktioniert.

Delphi ändert da nichts. Allerdings verhält sich die BDE auf verschiedenen Rechnern höchst unterschiedlich. Das liegt unter anderem an der Ermittlung des gemeinsamen Speicherbereichs, da an der Stelle auf dem einen Rechner z.B. eine DLL geladen ist und auf dem anderen nicht. Das kann man sich sehr schön anschauen, wenn man mit FastMM die Speicherbelegung visualisiert.

Zitat:

Zitat von johndoe049 (Beitrag 1526488)
Übrigens ist Delphi 7 nicht tot. Das funktioniert auch auf Windows 10 und Windows 11. Ist bei sehr alten Projekten noch hilfreich.

Es funktioniert noch, allerdings muss man diverse Fehler im Hinterkopf behalten und in den damit erstellten Programmen korrigieren (falsche Randberechnung, unsichtbare Buttons bei gedrückter Alt-Taste, Zeichenfehler mit DoubleBuffered, ...). Wenn man das tut, funktionieren damit erstellte Programme auch gut, aber es ist ein gewisser Aufwand nötig.

Zitat:

Zitat von QuickAndDirty (Beitrag 1526492)
Die Installationsdateine für die BDE von Borland gibt es oft nur aus zweifelhaften Quellen.

Das stimmt nicht, selbst bei Delphi 11. Den BDE Installer für RAD Studio 11 gibt es z.B. in den Downloads für registrierte Benutzer. Darin enthalten ist die bdeinst.cab, auch sprachspezifisch. Die braucht man nur auspacken und die enthaltene DLL mit "regsvr32 bdeinst.dll" ausführen, dann wird die Installation gestartet.
Und bei Delphi 7 war der Installer ja auch dabei.

Zitat:

Zitat von QuickAndDirty (Beitrag 1526492)
Sollte diese Datei einemal ohne Domain Administrator zu sein und ohne UAC ausgeführt werden und man ausversehen speichern (OK beim beenden des Programms), dann ist die Registry der BDE kaput und man muss die BDE deinstallieren, die Registry Einträge löschen und die BDE dann neu installieren.

Kaputt nicht gerade, aber selbst das Löschen der normalen Einträge hilft dann nicht weiter, denn das Problem ist ja die Virtualisierung älterer Programme. Man muss also die Daten löschen, die im Virtual Store für den einzelnen User gespeichert wurden, weil die eigentliche Stelle nur mit Adminrechten beschreibbar ist.

Zitat:

Zitat von QuickAndDirty (Beitrag 1526492)
Die BDE/Paradox geht regelmäßig kaputt...dann muss man die Daten reorganisieren.
Nach einem Programm Absturz kann es sein, dass einige Tabellen weiterhin gelockt sind, dann muss man die P*.lck und P*.net löschen.
Nach einem Rechnerabsturz sind oft die Index Dateien kaputt -> Indexe neu aufbauen

Ja, dafür muss man entsprechende Tools entwickeln und bereitstellen, damit der User das überhaupt selbst machen kann. Trotzdem war das oft ein Fall für den Support, weil die eingebauten Reparaturmethoden es nicht automatisch korrigieren konnten und die Kunden es nicht selbst machen konnten.

paule32.jk 5. Sep 2023 14:05

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
@johndoe049

Der Text, den ich geschrieben habe ist nicht aus irgendeinen anderen Internet-Artikel
abgeschrieben - er basiert auf meinen Wissenstanr, der, ich gebs ja zu, 10 bis 20 Jahre
hinterher hinkt.
Damals hatte ich sowohl MySQL mit PHP und anderen DB-System gearbeitet.
Dann kam eine etwas unschöne Zeit, aber das brauch ich ja nicht hier zu schreiben.

Die Programme, die ich bis jetzt programmiert habe sind nicht aus meinen Beruf entstanden.
Somit sind auch viele Projekte, die ich auf git gelagert habe.
Es handelt sich um Hobby-Produktionen, die aus dem mir zur Verfügung stehenden Privileg
hier programmiert habe.

Ich habe nie studiert oder Programmierer gelehrnt - Alles DIYS - und natürlich durch das
durchstöbern des Internets, und Eurer Hilfen - Danke dafür !

Für größere Projekte, die über den Hobby-Niveau hinausgehen bin ich sicherlich nicht der
beste - aber ich mach das aus/mit Freude.

johndoe049 5. Sep 2023 14:27

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Zitat:

Zitat von paule32.jk (Beitrag 1526503)
@johndoe049

Der Text, den ich geschrieben habe ist nicht aus irgendeinen anderen Internet-Artikel
abgeschrieben - er basiert auf meinen Wissenstanr, der, ich gebs ja zu, 10 bis 20 Jahre
hinterher hinkt.
Damals hatte ich sowohl MySQL mit PHP und anderen DB-System gearbeitet.
Dann kam eine etwas unschöne Zeit, aber das brauch ich ja nicht hier zu schreiben.

Die Programme, die ich bis jetzt programmiert habe sind nicht aus meinen Beruf entstanden.
Somit sind auch viele Projekte, die ich auf git gelagert habe.
Es handelt sich um Hobby-Produktionen, die aus dem mir zur Verfügung stehenden Privileg
hier programmiert habe.

Ich habe nie studiert oder Programmierer gelehrnt - Alles DIYS - und natürlich durch das
durchstöbern des Internets, und Eurer Hilfen - Danke dafür !

Für größere Projekte, die über den Hobby-Niveau hinausgehen bin ich sicherlich nicht der
beste - aber ich mach das aus/mit Freude.

In den letzten 10-20 Jahren hat sich bei Softwareentwicklung einiges getan.

Früher war die BDE im Delphi Bereicht Stand der Technik. Fast jeder hat es genutzt, wer es nicht genutzt hat wurde schräg angesehen. Heute ist es genau anders herum. BDE ist das Kennzeichen schlecht hin für veraltete Programmierung, unzufriedene Kunden/Nutzer und unnötige Mehrarbeit beim programmieren.

SQLite ist für kleine Datenbanken heute mit das übliche. Firebird Embedded hat den Vorteil, dass der Umstieg auf den Server relativ einfach möglich ist. Für MsSQL gab/gibt es auch eine embedded Version, die ist aber Lizenzmässig zu komplex um die einfach mal so einzubinden.

Vorteil von SQLite und Firebird: Wenn Delphi 7 zuviel nerft, kann man das problemlos auch mit Lazarus oder Delphi Community verwenden. BDE ist in der Hinsicht eine Einwegprogrammierung, die man nachher wegwirft.

Früher habe ich persönlich mit FoxPro gearbeitet. Heute würde ich das nicht mehr anfassen. Zuviel Zeit geht damit verloren, dass am laufen zu halten und wenn man den Compiler wechselt war die bisherige Arbeit fast komplett wertlos.

haentschman 6. Sep 2023 09:13

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Moin...8-)

Für welche Datenbank hast du dich entschieden? :zwinker:

Uwe Raabe 6. Sep 2023 09:25

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Ich schweife vermutlich jetzt ab, aber kann sich überhaupt noch jemand an Blackfish SQL erinnern?
Zitat:

Blackfish™ SQL is a high-performance, small-footprint, transactional database. Blackfish SQL
was originally implemented as an all-Java database called JDataStore. This is now called Blackfish SQL
for Java. Blackfish SQL was then ported from Java to C#. The C# implementation is called Blackfish
SQL for Windows.
Hier kommentiert Marco das Ende von Blackfish SQL: BlackFish SQL Gone in Delphi XE, What About a Replacement?

QuickAndDirty 6. Sep 2023 09:39

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Zitat:

Zitat von jaenicke (Beitrag 1526495)
Ja, dafür muss man entsprechende Tools entwickeln und bereitstellen, damit der User das überhaupt selbst machen kann. Trotzdem war das oft ein Fall für den Support, weil die eingebauten Reparaturmethoden es nicht automatisch korrigieren konnten und die Kunden es nicht selbst machen konnten.

Es ist einfach ein usability Albtraum. Ein system für masochisten. Ich weiß nicht wie wir OP davor retten können. Wir haben hier in der Support Datenbank 150 einträge wenn ich nur nach BDE suche.

Code:
Fehler:
Runtime 217.
Alte p*.lck und p*.net Dateien sind gelöscht worden.
BDEAdmin läst sich einwandfrei starten
Fehler tritt auf allen Workstations auf
Lösung:
Eine Tablle hatte einen zerstörten Header
Kann man mit unserem Setup ermitteln
Datei löschen und mittels Setup. Reorganisation neu anlegen lassen.
Kann auch andere Dateien betreffen. Eine komplette Reorganisation ist empfehlenswert.
Code:
Fehler:
"BDE-CFG Pafd nicht gefunden."
Die BDE ist nicht lauffähig
Ursache:
D-Info / Clicktel etc. ist installiert worden (die hinterlassen ein fehlerhafte BDE)(sie überschreiben die richtige)
BDE-Dateien wurden gelöscht ohne die Registry zu ändern.
Lösung:
In der Windows Registry den Borland Pfad suchen und umbenennen.
Danach neu installieren.
Sollen Konfigurationen von anderen Programmen eingelesen werden, kann man mit dem BDEADMIN.EXE die IDAPI32.CFG Dateien einmischen
Sollte die BDE bereits installiert sein und nur die Datenbankaliase nicht vorhanden sein können diese von Hand angelegt werden. Danach die Installation neu starten.
Code:
Fehler:
Runtime 217
Lösung/Ursache:
Die Language Einstellungen in der BDE-Konfiguration sind falsch.
statt ANSI muss PDOX intl. eingestellt werden.
Auch toll Runtime Error 217 heist immer einfach das irgendetwas mit der BDE nicht stimmt...

Code:
Fehler:
Indexfehler wird gemeldet.
Lösung/Ursache:
Die Tabelle war auf 256 MB angewachsen.
in BDE-Admin - Treiber -Paradox LEVEL auf 5 oder 7 und Blocksize auch 16384
Code:
Fehler:
Operation nicht anwendbar
Lösung/Ursache:
Mit dem BDEADMIN unter Konfiguration INIT folgende

BDE Parameter auf folgende Werte einstellen

LOW MEMORY USAGE 64
MAXBUFSIZE 8192
MAXFILEHANDLES 400
MEMSIZE 64
SHAREDMEMLOCATION 0x6BDE0000
SHAREDMEMSIZE 8192
USW. USW.
Ich verstehe nicht warum man sich sowas antun sollte.

QuickAndDirty 6. Sep 2023 09:54

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Zitat:

Zitat von paule32.jk (Beitrag 1526503)
Damals hatte ich sowohl MySQL mit PHP und anderen DB-System gearbeitet.

Nimm das ! MARIADB! MariaDb ist eine Freie Version von MYSQL (mich werden gleich wieder tausend leute korrigieren).
Es ist etwas das du kannst. Und es lebt noch.

jaenicke 6. Sep 2023 10:56

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1526535)
Auch toll Runtime Error 217 heist immer einfach das irgendetwas mit der BDE nicht stimmt...

Das ist einfach eine Zugriffsverletzung. Um solche Runtime Error Anzeigen zu vermeiden, hatte ich seinerzeit beim Start der Exe die idapi32.dll gepatcht.

haentschman 7. Sep 2023 05:53

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Moin...8-)

@paule32.jk:
Wir wüßten gern, ob wir dich von der BDE geheilt haben oder ob du in die Tiefe gesprungen bist. :zwinker:

Bitte Ausfüllen:

weiter helfen [ ] ich will nicht mehr [ ]

QuickAndDirty 7. Sep 2023 09:51

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Ich meine das in aller Güte.
BDE Paradox wird dich unglücklich machen! Wenn nicht gar schlimmeres.
Bitte nimm die Zeos komponenten und irgend eine umsonst db wie Firebird, Firebird Embedded, Mariadb usw.
Es muss nichtmal wirklich Firebird embedded sein! Mehrere "Named" Firebird server lassen sich nebeneinander installieren und haben einen Mini kleinen footprint. (Quasi so groß wie das füßchen eines neugeborenen). Der FB 2.5 Ordner hat 32MB und der Process wartet im leerlauf bei 1,1 MB im RAM die FBClient.dll im Anwendungsverzeichnis braucht 536kb auf der platte.
Die installation ist auch einfach
Firebird archiv entpacken (z.b. in das eigene Anwendungsverzeichnis)
Dann
Code:
cd c:\MeinProgramm\Firebird\Bin
Instsvc install -c -m -name FB_MEINPROGRAMM
Schnell noch in firebird.conf den Port eintragen
Code:
 
#cringeport
RemoteServicePort = 1337
und den Dienst starten.
Das ist zwar nicht NULL Aufwand, wie bei FB embedded... aber immer noch besser als BDE... und so ein mini service tut auch nicht weh. Deinstallieren mit
Code:
 instsvc remove -name FB_MEINPROGRAMM
nicht vergessen. Alternative zu instsvc remove wäre das Windows SC command
Code:
SC Delete FirebirdServerFB_MEINPROGRAMM

paule32.jk 7. Sep 2023 11:32

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
naja. Eigentlich ist es ja fast egal, was für eine Datenbank ich nehme.
Sollte halt SQL können, und ggf. frei erhältlich.

Dazu fallen mir ein:
- SQLite
- MS-SQL Express
- MySQL

MySQL ist im Moment mein Favorit, der ich hin-tendiere, da diese auch mittels
PHP Skript Zugriff erlaubt und nicht extra, ein weiterer Server installiert
werden muss.

Ist halt nur das Ding mit den Services, und den Ports.
Wenn da irgendwann mal einer nicht geht, wie dann Support leisten.

Wir kennen ja den Benutzer eines Windows-System's:
- alle Programme, die auf der BILD-CD angepriesen werden installieren, und testen
- eine Woche genutzt, nächstes Programm installiert
- dann CCleaner drüber...

nene, so wird das nichts.

Ich sollte wohl erstmal die einzelnen SQL-Dialekte untersuchen, dann die richtige
Datenbank wählen (SQLite oder Firebird), und dann mal sehen, wie größere Daten
behandelt werden können.
Denn mit nur 10 Records pro Tabelle, da tut es auch ne INI-Datei.

Mir ist es halt lieb, das so wenig vom User im System rumgekriegselt wird, weil
das wie oben beschrieben, den Support stark in Mitleidenschaft bringt.

Was dann natürlich auch erstmal darauf zielt, allgemeine oder erweiterte AGB's
zu formulieren, und während des Programm-Start's anzubieten.

Dann ggf. Abfragen machen, ob der Benutzer diese auch wirklich gelesen und/oder
verstanden hat.
Klingt zwar lustig und pläde solche Abfragen einzubauen (weil die auch irgendwann
nerven), aber wie will mann denn sonst seine Software absichern, so dass diese nicht
gleich unter der Prämise Open Source oder GPL Lizenzsierung fällt. ?

QuickAndDirty 7. Sep 2023 12:22

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Avira benutzt Firebird und die wollen am ende irgendwie Geld für ihen Virenscanner sehen!
Keine Sorge.

Firebird Embedded hätte den vorteil gegenüber SQLite, dass man auch eine echte Multiuser und Multiworkstations Andwendung draus machen kann in dem man nen Server installiert.
SQLite hätte evtl. den Vorteil das man Teile des Codes für eine Smartphone APP verwedenn kann das SQLITE auf allen Smartphones installiert ist.

paule32.jk 7. Sep 2023 12:30

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
vielleicht könnte man ja einen Mix machen ?

Option A: Desktop App = Server Version
Option B: Mobile App = SQLite für die "zwischen" Speicherung

bedeutet aber wieder "mehr" Arbeit wegen der Synchronisation.
Oder gleich so programmieren, das man Thier-Awendungen bastelt, und ggf. NAT fähig macht.

Also NAT im Sinne mit VPN:
Man ruft mit einer mobile-App sein Home-VPN (ist in FritzBox mit drinn), und man
hat dann einen geschützen Zugang, wenn man dann unterwegs ist.

Option C: Mix aus A und B
Option D: Mix aus C und VPN

Dann müsste man aber auch sehen, das dies doppelt abgesichert wird:

- keine fremden mobile-Nummern
- neben VPN-Schutz, SSL Zertifikate
- Client-Certs

MEissing 7. Sep 2023 15:11

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Zitat:

Zitat von paule32.jk (Beitrag 1526574)
MySQL ist im Moment mein Favorit

Lizenzproblematik beachten!

MySQL ist mittlerweile unter den Fittichen von Oracle. Die haben gute und viele Anwälte!

IANAL: Wenn du MySQL "free"/Community Edition benutzt, musst du auch deine Anwendung unter GPL stellen. Weiterhin problematisch: Die notwendige LIBMYSQL.DLL

paule32.jk 7. Sep 2023 15:35

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Hallo,

FreeSoftware, OpenSource, GPL, und Konsorten ...

Irgendwann kommt doch Jedem die Einsicht, das freie Software eine Utopie ist.
Damit meine ich auch das gutgelobte Betriebsystem Linux.

Damit habe ich nach Windows, viele Jahre gearbeitet, und bin dann frustriert wieder auf
Windows umgestiegen, da unter Linux die verschiedenen Distributionen die Packetmanager
oder aber das System selbst sehr arg zusetzen können.
Mal ein "unfertiges" Programm installiert, und schon muss man erstmal den Compiler
anwerfen, und die richtigen Libs, und Header haben.

Zu meinen Erstaunen ist Windows sehr gut gewachsen, und ich habe keinen BlueScreen seit
weiteren Jahren entdecken können.
Es liegt ja an jedem Selbst, ob er Erotic-Trojaner zieht oder die BILD-CD Programme alle
haben will...
Ich für mein Fazit kann sagen, das ich wieder besser mit Windows zurecht komme, als die
plädde Fukellei unter Linux.

Ich verstehe ja sowieso nicht, warum es hunderte von OpenSource Programmierer gibt, die
sich per Donut über Wasser halten wollen.
In Deutschland weiß ich gerade nicht so Recht, aber: Spenden müssen Zweckgebunden verteilt
und/oder eingesetzt werden.
Sprich: Ich kann damit eine Neue Tastatur oder für das Versenden von Datenträgern die
fälligen Portokosten, aber keine Bratwurst kaufen.

Schlußendlich macht es keinen Sinn, privat (sofern es nicht die Eigene Firma ist) irgend
welche Programme zu basteln, und Hohen Gewinn erwarten - auch wenn man das hier und da
erhältliche Delphi 7 oder C++ Builder 6 saugen kann.

Denn wenn man dann mit solchen Versionen Gewinn erzielen will, dann kommen die Anwälte aus
jeder Ecke und machen dann einen Platt.
Ich kann mir schon gut Vorstellen, dass man feststellen kann, mit welchen Tool (Delphi,
C++ Builder oder die ganze GNU Serie) das Programm oder Teile davon entwickelt wurden.

Ich muss es ja zugeben, das ich auch mit einer drakcopy daher entwickle.
Aber ich will damit keinen Gewinn machen, und stelle daher ALLE meine geistigen Ergüße fast
alle unter MIT oder PD.

Dann kann jeder selbst entscheiden, ob er mit seiner whitecopy versucht ein Programm zu
übersetzen.

Am Ende mache ich mich ja auch schon straffällig aufmerksam, weil ich den Schutz umgangen
habe, ohne vorher die Lizenz zu lesen.

Von daher ist es eigentlich auch egal, was ich da und womit ich bastle.

Aber Danke für den Tipp.

jaenicke 7. Sep 2023 15:51

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Zitat:

Zitat von paule32.jk (Beitrag 1526599)
Ich muss es ja zugeben, das ich auch mit einer drakcopy daher entwickle.
Aber ich will damit keinen Gewinn machen, und stelle daher ALLE meine geistigen Ergüße fast
alle unter MIT oder PD.

Selbst schuld. Die Community Edition gibt es für genau diesen Zweck kostenlos. Da hast du lokalen Datenbankzugriff mit modernen Komponenten auch schon mit dabei.

Nebenbei: Da du im Profil Delphi 7 Enterprise angegeben hast, war das eh schon so gut wie klar. Das ist eine der am meisten illegal kopierten Versionen.

Zitat:

Zitat von paule32.jk (Beitrag 1526599)
auch wenn man das hier und da
erhältliche Delphi 7 oder C++ Builder 6 saugen kann.

Da gibt es auch aktuelle Versionen. Die Verfügbarkeit ist nicht das Problem. Aber egal, ob die Version alt oder neu ist, es bleiben Raubkopien.

Zitat:

Zitat von paule32.jk (Beitrag 1526599)
Denn wenn man dann mit solchen Versionen Gewinn erzielen will, dann kommen die Anwälte aus
jeder Ecke und machen dann einen Platt.
Ich kann mir schon gut Vorstellen, dass man feststellen kann, mit welchen Tool (Delphi,
C++ Builder oder die ganze GNU Serie) das Programm oder Teile davon entwickelt wurden.

Sicher kann man das feststellen und auch welche Edition verwendet wurde. Da du mit der Community Edition sogar bis zu 5000€ verdienen kannst, solltest du dann auch das Geld haben, eine legale Version zu kaufen...
Umso weniger Sinn macht es, eine uralte Raubkopie einzusetzen, sofern man die Lizenzbedingungen der Community Edition erfüllt. // EDIT: Ich meinte natürlich nicht, dass es sonst Sinn macht.

mytbo 7. Sep 2023 16:00

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Für illegale Software gibt es keine Begründung. Beim Wunsch nach Unabhängigkeit und deiner Situation wäre Lazarus eine Alternative. Einfach installieren lässt es sich mit FPCUpDeluxe. Lazarus mit Cross-Compilern unter Windows installieren und die ersten Schritte zur Erstellung eines Projekts, wird ausführlich in diesem YouTube Video erklärt.

Bis bald...
Thomas

paule32.jk 7. Sep 2023 16:01

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
das mit der 5000 Euro Marke ist ja auch noch bei mir so ein Ding...

Da ich Bewohner eines Wohnheimes bin, wird mir jedliches Zusatz-Einkommen wieder abgegolten.
Sprich: Ich muss ALLES für den Wohnheimplatz aufwenden.

Ich kann es ja Verstehen, dass, wo ich gerade bin, ein Subway ist.
Aber ich habe da so mein kleines Problemjen auf den 1. Arbeitsmarkt wieder anzufangen.

So nutze ich meine Privilegien hier als Berater - ohne dafür extra Geld zu Verlangen.
Es ist nicht gerade die höchste Position als Bewohnerbeirats-Vorsitzender, aber mir macht
das Spaß.

Und den Rest der Zeit verbringe ich mit meinen Hobby - Programmieren.

Viele bei uns haben *kein* Hobby, und man kann sich ja vorstellen, was dann kommt.

Aber ja: Ich habe die neue Community Version schon begutachtet, und muss erstmal wieder
neu reinschnuppern.

MEissing 7. Sep 2023 16:49

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Ach so: „Weil ich eh schon eine Raubkopie einsetze, sind auch weitere/andere Lizenzbestimmungen sowieso egal“

Naja. Da bin ich raus.

Andreas13 7. Sep 2023 16:52

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Zitat:

Zitat von paule32.jk (Beitrag 1526605)
das mit der 5000 Euro Marke ist ja auch noch bei mir so ein Ding... ... wird mir jedliches Zusatz-Einkommen wieder abgegolten. Sprich: Ich muss ALLES für den Wohnheimplatz aufwenden.

Sebastian hat nicht gemeint, daß Du mit der Community Edition 5000 € verdienen mußt :-D, sondern darfst (oder eben auch ohne Einnahmen... :)), und die legale Benutzung bleibt Dir weiterhin gestattet.
Fazit:
Lade die Community Edition runter, installiere sie und benutze sie!

paule32.jk 7. Sep 2023 17:50

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
nein.
Mir ist es nicht egal, was die Lizenzen schreiben.
Ich wollte damit ausdrücken, dass es egal ist, was ich mache - Nichts tun zum Beispiel.
Ich beziehe kein Bürgergeld.
Und ich bekomme sonst keine Anreize, mir Arbeit mit meinen Hobby zu Suchen, weil, wie ich
schon schrieb, ALLES für andere Aufwendungen eingekramt wird.
Oder würdet Ihr um 6 Uhr Morgens aufstehen, dann eine Stunde zur Arbeit und zurück,
bis 15 Uhr jeden Tag ein Tag aus, für 80 Euro im Monat ?

Und warum mach ich das ? - weil ich nicht als Sozialschmarotzer dastehen will, wenngleich
ich das in einen bestimmten Rahmen auch mache.

Aber Ihr habt Recht - illegale Rechtfertigungen bleiben illegal - das verstehe ich ja.

Das Windows 10 wurde ja auch als kostenlosen Download sowie auf ISO Angebote verkauft.
Da kostete das System um die 20 Euro - das ging ja noch.
Aber Heute ist das wieder viel teurer und das saugen wohl sicherlich auch nicht mehr legal.

Es gab ja mal in der Computer-Zeitschrift CT ein Personal Delphi.
Das fand ich irgendwie gut zum basteln und ausreichend für Pascal lernen mit Windows Knöpfen.

Ihr müsst entschuldigen, ich habe seit 2 Dekaden keinen Überblick mehr...

jaenicke 7. Sep 2023 23:08

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Zitat:

Zitat von paule32.jk (Beitrag 1526616)
Oder würdet Ihr um 6 Uhr Morgens aufstehen, dann eine Stunde zur Arbeit und zurück,
bis 15 Uhr jeden Tag ein Tag aus, für 80 Euro im Monat ?

Das geht vom eigentlichen Thema weg, drum nur so viel:
Dabei vergessen leider viele, dass man ja nicht nur z.B. 80 Euro bekommt, sondern das Geld zum Leben / Heim / whatever. Das wird nur als selbstverständlich gegeben bestrachtet, so dass man dann nur die 80 Euro mehr sieht.

himitsu 8. Sep 2023 03:20

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Ja, es gab mal die Personal und Andere Versionen, z.B. in Zeitschriften oder Büchern.

Dann gab es die Turbo Explorer, später die Starter, zwischendurch heimlich auch mal das Appmethod Free und nun eben die Community Edition, als kostenlose Varianten.
https://www.embarcadero.com/de/products/delphi/starter





Community Edition = lebt schon länger als erwartet und die aktuelle Version ist neuer, als man je zu träumen glaubte. (bis vor Kurzen war sie immer mindestens ein Jahr veraltet älter)
Appmethod = Ohne Wörter wie Delphi, Borland oder Embarcadero im Namen oder auf der Webseite, damit niemand sofort bemerkt, dass es eigentlich Delphi ist.

MEissing 8. Sep 2023 06:51

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Zitat:

Zitat von paule32.jk (Beitrag 1526616)
nein.
Mir ist es nicht egal, was die Lizenzen schreiben.

Und dein Delphi 7 Enterprise?

haentschman 8. Sep 2023 07:14

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Zitat:

Fazit:
Lade die Community Edition runter, installiere sie und benutze sie!
...+1 :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 Uhr.
Seite 1 von 3  1 23      

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