Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Sortieren im Clientdataset nach ID(autoinc) (https://www.delphipraxis.net/177583-sortieren-im-clientdataset-nach-id-autoinc.html)

Perlsau 9. Dez 2013 18:04

AW: Sortieren im Clientdataset nach ID(autoinc)
 
Zitat:

Zitat von Sir Rufo (Beitrag 1239161)
Zitat:

Zitat von Natcree (Beitrag 1239158)
kann es vielleicht sein das ich im oi den filename schon drinne habe

Ja, da schauen wir doch mal auf deinen Bildschirm, das geht bestimmt schneller, als wenn du selber schaust :wall:

Kiffen und Saufen vertragen sich nicht wirklich mit dem Programmieren :drunken:

Natcree 9. Dez 2013 18:09

AW: Sortieren im Clientdataset nach ID(autoinc)
 
Ich brauchte nur Als Admin starten. nun gehts sche... Berechtigungen kann mann das nicht gleich mit in die exe compilieren oder so ?

Natcree 9. Dez 2013 18:10

AW: Sortieren im Clientdataset nach ID(autoinc)
 
Wie recht du hast Perlsau:lol:

DeddyH 9. Dez 2013 18:14

AW: Sortieren im Clientdataset nach ID(autoinc)
 
Zitat:

Zitat von Natcree (Beitrag 1239164)
Ich brauchte nur Als Admin starten. nun gehts sche... Berechtigungen kann mann das nicht gleich mit in die exe compilieren oder so ?

Berechtigungen nicht (wäre ja auch noch schöner), aber Du könntest per Manifest dafür sorgen, dass Windows ggf. nach einem Admin-Login fragt. Allerdings: willst Du das wirklich? Deine Daten stehen einfach an der falschen Stelle, pack sie nach APPDATA bzw. COMMONAPPDATA, und gut is.

p80286 9. Dez 2013 18:29

AW: Sortieren im Clientdataset nach ID(autoinc)
 
Zitat:

Zitat von DeddyH (Beitrag 1239167)
willst Du das wirklich? Deine Daten stehen einfach an der falschen Stelle, pack sie nach APPDATA bzw. COMMONAPPDATA, und gut is.

abgesehen davon, sollte ein LoadfromFile nicht trotzdem funktionieren?

Gruß
K-H

DeddyH 9. Dez 2013 18:29

AW: Sortieren im Clientdataset nach ID(autoinc)
 
Hätte ich jetzt auch gedacht, aber wer weiß?

Sir Rufo 9. Dez 2013 18:56

AW: Sortieren im Clientdataset nach ID(autoinc)
 
Vermutlich steht im VirtualStore eine Datei mit ohne Daten ;)

himitsu 9. Dez 2013 19:13

AW: Sortieren im Clientdataset nach ID(autoinc)
 
Zitat:

Zitat von DeddyH (Beitrag 1239167)
Zitat:

Zitat von Natcree (Beitrag 1239164)
Ich brauchte nur Als Admin starten. nun gehts sche... Berechtigungen kann mann das nicht gleich mit in die exe compilieren oder so ?

Berechtigungen nicht (wäre ja auch noch schöner), aber Du könntest per Manifest dafür sorgen, dass Windows ggf. nach einem Admin-Login fragt. Allerdings: willst Du das wirklich? Deine Daten stehen einfach an der falschen Stelle, pack sie nach APPDATA bzw. COMMONAPPDATA, und gut is.

Jupp, stattdessen würde ich auch das Programm besser so schreiben, daß es "ordentlich" funktioniert.

- ich darf nicht in das verbotene Verzeichnis schreiben, dann hole ich mir eben die übelsten Adminrechte und mach es dennoch, anstatt da hinzuschreiben, wo ich darf
- ich darf nicht durch die große Chef-Tür in den Speisesaal, also mach ich mich zum Chef, anstatt die kleine Angestelltentür zu nehmen


Man könnte fast Wetten Natcree und alle, wo es geht, arbeiten schön mit Adminrechten?
Tja, selbst Schuld.

Sir Rufo 9. Dez 2013 19:29

AW: Sortieren im Clientdataset nach ID(autoinc)
 
Dabei könnte das Leben so einfach sein
Delphi-Quellcode:

program dp_177583;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  SysUtils,
  TypInfo,
  uAppPath in 'uAppPath.pas';

procedure OutputPath;
  begin
    Writeln( AppPath.Data );
    Writeln( AppPath.Konten );
    Writeln( AppPath.Mitgliedsausweis );
    Writeln( AppPath.Schreiben );
    Writeln( AppPath.Kassenbuch );
    Writeln( AppPath.Handkasse );
  end;

procedure Main;
  var
    LLocation : TAppDataLocation;
  begin
    for LLocation := low( TAppDataLocation ) to high( TAppDataLocation ) do
      begin
        AppPath.Location := LLocation;
        Writeln;
        Writeln( 'AppPath.Location=', GetEnumName( TypeInfo( TAppDataLocation ), Integer( LLocation ) ) );
        Writeln;
        OutputPath;
      end;
  end;

begin
  try

    Main;

  except
    on E : Exception do
      Writeln( E.ClassName, ': ', E.Message );
  end;

  ReadLn;

end.
mit
Delphi-Quellcode:
unit uAppPath;

interface

  type
    TAppDataLocation = ( adlUser, adlCommon, adlPortable );

    TAppPath = class
    private
      FLocation : TAppDataLocation;
    public
      function Data : string;
      function Kassenbuch : string; overload;
      function Kassenbuch( const ADate : TDateTime ) : string; overload;
      function Konten : string;
      function Mitgliedsausweis : string;
      function Schreiben : string;
      function Handkasse : string; overload;
      function Handkasse( const ADate : TDateTime ) : string; overload;

      property Location : TAppDataLocation read FLocation write FLocation;
    end;

  function AppPath : TAppPath;

implementation

  uses
    Windows,
    ShellApi,
    ShlObj,
    SysUtils;

  var
    _AppPath : TAppPath;

  function AppPath : TAppPath;
    begin
      if not Assigned( _AppPath )
      then
        begin
          _AppPath := TAppPath.Create;
        end;
      Result := _AppPath;
    end;

  function GetKnownFolder( const FolderID : TGUID ) : string;
    var
      LPath : PChar;
    begin
      if SHGetKnownFolderPath( FolderID, 0, 0, LPath ) >= 0
      then
        Result := LPath
      else
        Result := #0;
    end;

  function GetSpecialFolder( FolderID : longint ) : string;
    var
      Path  : PChar;
      idList : PItemIDList;
    begin
      GetMem( Path, MAX_PATH );
      SHGetSpecialFolderLocation( 0, FolderID, idList );
      SHGetPathFromIDList( idList, Path );
      Result := string( Path );
      FreeMem( Path );
    end;

  function WinVersionMinVista : Boolean;
    begin
      Result := CheckWin32Version( 6, 0 );
    end;

  function UserAppDataFolder : string;
    begin
      if WinVersionMinVista
      then
        Result := GetKnownFolder( StringToGUID( '{3EB685DB-65F9-4CF6-A03A-E3EF65729F3D}' ) )
      else
        Result := GetSpecialFolder( CSIDL_APPDATA )
    end;

  function CommonAppDataFolder : string;
    begin
      if WinVersionMinVista
      then
        Result := GetKnownFolder( StringToGUID( '{62AB5D82-FDC1-4DC3-A9DD-070D1D495D97}' ) )
      else
        Result := GetSpecialFolder( CSIDL_COMMON_APPDATA )
    end;

  { TAppPath }

  function TAppPath.Data : string;
    begin
      case Location of
        adlUser :
          Result := UserAppDataFolder + '\Vereintool\';
        adlCommon :
          Result := CommonAppDataFolder + '\Vereintool\';
        adlPortable :
          Result := ExtractFilePath( ParamStr( 0 ) + 'Daten\' );
      end;
      Result := Result + 'Daten\';
    end;

  function TAppPath.Handkasse( const ADate : TDateTime ) : string;
    begin
      Result := Kassenbuch( ADate ) + FormatDateTime( '"Handkasse "yyyy".xls"', ADate );
    end;

  function TAppPath.Handkasse : string;
    begin
      Result := Handkasse( Now );
    end;

  function TAppPath.Kassenbuch( const ADate : TDateTime ) : string;
    begin
      Result := Data + FormatDateTime( '"Kassenbuch\"yyyy"\"', ADate );
    end;

  function TAppPath.Kassenbuch : string;
    begin
      Result := Kassenbuch( Now );
    end;

  function TAppPath.Konten : string;
    begin
      Result := Data + 'Konten\';
    end;

  function TAppPath.Mitgliedsausweis : string;
    begin
      Result := Data + 'Mitgliedsausweis\';
    end;

  function TAppPath.Schreiben : string;
    begin
      Result := Data + 'Schreiben\';
    end;

initialization

finalization

  FreeAndNil( _AppPath );

end.
bekommt man
Code:

AppPath.Location=adlUser

C:\Users\user123\AppData\Roaming\Vereintool\Daten\
C:\Users\user123\AppData\Roaming\Vereintool\Daten\Konten\
C:\Users\user123\AppData\Roaming\Vereintool\Daten\Mitgliedsausweis\
C:\Users\user123\AppData\Roaming\Vereintool\Daten\Schreiben\
C:\Users\user123\AppData\Roaming\Vereintool\Daten\Kassenbuch\2013\
C:\Users\user123\AppData\Roaming\Vereintool\Daten\Kassenbuch\2013\Handkasse 2013.xls

AppPath.Location=adlCommon

C:\ProgramData\Vereintool\Daten\
C:\ProgramData\Vereintool\Daten\Konten\
C:\ProgramData\Vereintool\Daten\Mitgliedsausweis\
C:\ProgramData\Vereintool\Daten\Schreiben\
C:\ProgramData\Vereintool\Daten\Kassenbuch\2013\
C:\ProgramData\Vereintool\Daten\Kassenbuch\2013\Handkasse 2013.xls

AppPath.Location=adlPortable

C:\Users\user123\Documents\RAD Studio\Projekte\_dp\dp_177583\Win32\Debug\dp_177583.exeDaten\Daten\
C:\Users\user123\Documents\RAD Studio\Projekte\_dp\dp_177583\Win32\Debug\dp_177583.exeDaten\Daten\Konten\
C:\Users\user123\Documents\RAD Studio\Projekte\_dp\dp_177583\Win32\Debug\dp_177583.exeDaten\Daten\Mitgliedsausweis\
C:\Users\user123\Documents\RAD Studio\Projekte\_dp\dp_177583\Win32\Debug\dp_177583.exeDaten\Daten\Schreiben\
C:\Users\user123\Documents\RAD Studio\Projekte\_dp\dp_177583\Win32\Debug\dp_177583.exeDaten\Daten\Kassenbuch\2013\
C:\Users\user123\Documents\RAD Studio\Projekte\_dp\dp_177583\Win32\Debug\dp_177583.exeDaten\Daten\Kassenbuch\2013\Handkasse 2013.xls
Da kann man noch weiter mit spielen ;)

Natcree 9. Dez 2013 19:43

AW: Sortieren im Clientdataset nach ID(autoinc)
 
Danke Das ist aber viel viel code. XD
Ich Danke euch zum tausendstenmal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:45 Uhr.
Seite 3 von 4     123 4      

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