AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Datei öffnen, speichern[Prob gelöst]
Thema durchsuchen
Ansicht
Themen-Optionen

Datei öffnen, speichern[Prob gelöst]

Ein Thema von synex · begonnen am 27. Okt 2003 · letzter Beitrag vom 28. Okt 2003
Antwort Antwort
synex

Registriert seit: 14. Apr 2003
147 Beiträge
 
Delphi 6 Personal
 
#1

Datei öffnen, speichern[Prob gelöst]

  Alt 27. Okt 2003, 21:39
Hi Leute,

Ich habe ein Problem: Ich will eine Datei öffnen, etwas anhängen (nur einen Buchstaben oder sowas), dieses angehängte danach sofort wieder löschen und die Datei schließlich shcließen.

Was soll das ganze werdet ihr euch fragen. Also: Ich habe eine Listbox voll mit Dateinamen. Innerhalb der Listbox kann man die Reihenfolge verändern. Wenn ich jetzt auf einen Button drücke, sollen die Dateien in der Reihenfolge wie sie in der Listbox stehen ihr Änderungsdatum haben, also der oberste das älteste.

Ich habe schon versucht, das Datum der Datei zu ändern, habs aber nicht geschafft das Programm dazu zu bringen von einer bestimmten Datei das Änderungsdatum auf einen Wert zu bringen, damit es zwischen den 2 darüberliegenden Elementen liegt.

OK das klingt jetzt sehr kompliziert, aber mir geht es im Prinzip nur darum eine Datei zu öffnen, etwas anzuhängen (nur etwas kleines), das daraufhin dann wieder zu löschen.

MfG synex
  Mit Zitat antworten Zitat
synex

Registriert seit: 14. Apr 2003
147 Beiträge
 
Delphi 6 Personal
 
#2

Re: Datei öffnen, speichern

  Alt 27. Okt 2003, 22:11
OK ich hab das Problem anders gelöst
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#3

Re: Datei öffnen, speichern[Prob gelöst]

  Alt 27. Okt 2003, 22:34
Und wie?
  Mit Zitat antworten Zitat
synex

Registriert seit: 14. Apr 2003
147 Beiträge
 
Delphi 6 Personal
 
#4

Re: Datei öffnen, speichern[Prob gelöst]

  Alt 28. Okt 2003, 18:13
Es ging mir ja darum das Änderungsdatum der Dateien zu ändern so dass sie die Reiehnfolge haben wie in der Listbox.

Ich habe jetzt beim Drücken eines Buttons das Änderungsdatum jeder einzelnen Datei so geändert, dass siedie neue Reihenfolge haben.

Also:

Vorher:

datei1 12.10.03
datei2 16.10.03
datei3 20.10.03

Jetzt datei2 an erste Stelle verschieben:

Nachher:

datei2 18.10.03
datei1 19.10.03
datei3 20.10.03
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Datei öffnen, speichern[Prob gelöst]

  Alt 28. Okt 2003, 19:54
Hai synex,

poste hier doch einfach mal den relevanten Teil von deiner Lösung.
Dann können andere (wenn sie die Suche verwenden) an deiner Lösung teilhaben.

Die DP lebt zu einem großem Teil davon das alle die Sosse veröffentlichen mit denen ein Problem gelöst wurde.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
synex

Registriert seit: 14. Apr 2003
147 Beiträge
 
Delphi 6 Personal
 
#6

Re: Datei öffnen, speichern[Prob gelöst]

  Alt 28. Okt 2003, 20:13
Diese beiden Prozeduren hab ich mir hier her geklaut
Delphi-Quellcode:
//Dateierstellung etc ändern
function ChangeFileDate(const path: string; const Creation, LastAccess,
  LastWrite: TDateTime): Boolean;
var
  hFile: THandle;
  ftCreationUTC, ftLastAccessUTC, ftLastWriteUTC: TFileTime;
  ftCreationLocal, ftLastAccessLocal, ftLastWriteLocal: TFileTime;
  stCreationLocal, stLastAccessLocal, stLastWriteLocal: TSystemTime;
begin
  result := false;
  hFile := CreateFile(PChar(path), GENERIC_READ or GENERIC_WRITE, 0, nil,
  OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
  if (hFile <> INVALID_HANDLE_VALUE) then
    try
      //Umwandlung von TDateTime in Systemzeitformat
      DateTimeToSystemTime(Creation, stCreationLocal);
      DateTimeToSystemTime(LastAccess, stLastAccessLocal);
      DateTimeToSystemTime(LastWrite, stLastWriteLocal);
      //Umwandlung von Systemzeitformat in lokales Dateizeitformat
      if (SystemTimeToFileTime(stCreationLocal, ftCreationLocal)) and
      (SystemTimeToFileTime(stLastAccessLocal, ftLastAccessLocal)) and
      (SystemTimeToFileTime(stLastWriteLocal, ftLastWriteLocal)) then begin
        //Umwandlung von lokalem Dateizeitformat in Weltzeit
        if (LocalFileTimeToFileTime(ftCreationLocal, ftCreationUTC)) and
        (LocalFileTimeToFileTime(ftLastAccessLocal, ftLastAccessUTC)) and
        (LocalFileTimeToFileTime(ftLastWriteLocal, ftLastWriteUTC)) then begin
          result:=SetFileTime(hFile, @ftCreationUTC, @ftLastAccessUTC, @ftLastWriteUTC);
        end;
      end;
    finally
      CloseHandle(hFile);
    end;
end;

//datei datum sachen auslesen
function GetFileDate(const FileName: string; out Creation, LastAccess,
  LastWrite: TDateTime): Boolean;
var
  hFile: THandle;
  ftCreationUTC, ftLastAccessUTC, ftLastWriteUTC: TFileTime;
  ftCreationLocal, ftLastAccessLocal, ftLastWriteLocal: TFileTime;
  stCreationLocal, stLastAccessLocal, stLastWriteLocal: TSystemTime;
begin
  result:=false;
  hFile := CreateFile(PChar(FileName), GENERIC_READ, 0, nil,
  OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
  if (hFile <> INVALID_HANDLE_VALUE) then begin
    try
      //Ermittlung des Dateidatums in UTC (Weltzeit)
      if GetFileTime(hFile, @ftCreationUTC, @ftLastAccessUTC, @ftLastWriteUTC) then begin
        //Umrechnung in Ortszeit
        if FileTimeToLocalFileTime(ftCreationUTC, ftCreationLocal)
        and FileTimeToLocalFileTime(ftLastAccessUTC, ftLastAccessLocal)
        and FileTimeToLocalFileTime(ftLastWriteUTC, ftLastWriteLocal) then begin
          //Umwandlung in Systemdatumformat
          if FileTimeToSystemTime(ftCreationLocal, stCreationLocal)
          and FileTimeToSystemTime(ftLastAccessLocal, stLastAccessLocal)
          and FileTimeToSystemTime(ftLastWriteLocal, stLastWriteLocal) then begin
            //Zuweisung der Rückgabewerte
            Creation := SystemTimeToDateTime(stCreationLocal);
            LastAccess := SystemTimeToDateTime(stLastAccessLocal);
            LastWrite := SystemTimeToDateTime(stLastWriteLocal);
            result:=true;
          end;
        end;
      end;
    finally
      CloseHandle(hFile);
    end;
  end;
end;
Und so hab ich das in meinem Programm umgesetzt: (in der Listbox stehen die dateinamen mit Pfad in der endgültigen Reihenfolge)

Delphi-Quellcode:
procedure TForm1.Button15Click(Sender: TObject);
var i:integer;
  datum,erstellt,geaendert,access:tdatetime;
begin
datum:=now-(listbox1.Count-i); //der Einfachheit halber ist der Datumsunterschied genau 1 Tag
for i:= 0 to listbox1.Count-1 do
  begin
  getfiledate(listbox3.Items.Strings[i],erstellt,access,geaendert); //Daten auslesen
  changefiledate(listbox3.Items.Strings[i],datum,datum,datum); //und neue Daten setzen, Erstellungsdatum, LastAccess und LastWrite wird gleichgesetzt
  end;
end;
Und das wars auch schon.

MfG synex
  Mit Zitat antworten Zitat
Antwort Antwort


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