AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Konzeptfr.: Dateinamen einlesen, ändern,dann zurückschreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Konzeptfr.: Dateinamen einlesen, ändern,dann zurückschreiben

Ein Thema von juergen · begonnen am 23. Aug 2008 · letzter Beitrag vom 24. Aug 2008
Antwort Antwort
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#1

Konzeptfr.: Dateinamen einlesen, ändern,dann zurückschreiben

  Alt 23. Aug 2008, 12:04
Hallo zusammmen,

folgendes habe ich vor:
- ein Verzeichnis auswählen, aus diesem sollen dann alle Dateien nebst Pfadangabe (auch aus den Unterverzeichnissen) eingelesen werden
(im Moment lese ich das ganze in ein Memo)
- dann soll man die Bezeichnungen einzelner Dateien ändern können
- in einem "Rutsch" die Änderung der Dateinamen vornehmen....

Meine Idee bis hierhin:
- ich schreibe die Dateinamen zusätzlich in ein 2. Memo(?)
- in dem 2. Memo kann man die Änderungen vornehmen
- dann prüfen ich das Memo 2 gegen das Memo 1 und weiß, wo Änderungen vorgenommen wurden (über IndexOf() )
- wenn der String aus Memo2 <> Memo1 dann wird die entsprechende Datei umbenannt

So, nun meine Fragen hierzu:
1.) ist dieses Konzept generell machbar, bzw. was wären Alternativen
2.) ich muss verhindern, dass eine Memo.Line gelöscht wwerden kann, da mir die Memo.Line[x] ja als Referenz dient

Irgendwie "spüre" ich, dass ich da im Moment das falsche Konzept habe.

Für alternative Vorschläge wäre ich sehr dankbar.
Es würde mir auch viel helfen, wenn zu evtl. alternativ aufgezeigten Komponeten die dann benötigten Eigenschaften mit genannt werden.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#2

Re: Konzeptfr.: Dateinamen einlesen, ändern,dann zurückschre

  Alt 23. Aug 2008, 12:18
wie wär es mit einer tObjectList?

diese fütterst mit einem objekt welches ungefähr so aussieht

Delphi-Quellcode:
type TFutter = class
  private
   ffilename_old: string;
   ffilename_new: string;
  public
   function CanSave: boolean;
   procedure Save;
  end;

function TFutter.cansave: boolean;
begin
  result := ffilename_old <> ffilename_new;
end;

procedure save;
begin
  if cansave then
  begin
   //hier umbenennen
   ffilename_old := ffilename_New;
  end;
end;
wenn du das dann anzeigen möchtest, kein problem, kannst ja hinter einen tStringgrid oder listbox ja ein objekt hängen, die verwaltung kannst ganz einfach über die objectlist vornehmen

<HTH> GG
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Konzeptfr.: Dateinamen einlesen, ändern,dann zurückschre

  Alt 23. Aug 2008, 22:28
Hallo grenzgaenger,

vielen Dank für deinen Denkansatz.
Ich muss mich nun erst mal in das Thema TObjectList einlesen.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Konzeptfr.: Dateinamen einlesen, ändern,dann zurückschre

  Alt 24. Aug 2008, 01:46
Die Klasse TStrings kann ja nicht nur Strings speichern, sondern zu jedem String noch ein Objekt.
Das bedeutet man kann Memo.Lines mit Zeilen bestücken, wobei mit jeder Zeile ein Objekt verknüpft ist.
Delphi-Quellcode:
TFileObjekt=class(TObject)
public
  FileName:string; // Dateiname mit gesamtem Pfad
  procedure RenameFile(const newfilename:string);
  function GetFilenamePart:string; // Dateiname ohne Pfad
end;

...
var
  fo : TFileObjekt;
...
  fo := TFileObjekt.Create;
  fo.FileName := .......;
  Memo1.Lines.AddObject(fo.GetFilenamePart, fo); // statt Add() wird AddObject() verwendet
Man muss jetzt aber noch aufpassen: löscht der Benutzer eine Zeile, wird das Objekt nicht freigegeben!
=> es droht Speicherleck
Hier hilft aber die Klasse TObjectList.
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Konzeptfr.: Dateinamen einlesen, ändern,dann zurückschre

  Alt 24. Aug 2008, 10:13
Hallo sx2008,

danke für die Erläuterungen!
Gestern hatte ich angefangen mich mit TObjectList zu beschäftigen.
Nachdem ich die Ableitungen von TList bis hin zu TObjectList gelesen hatte war für mich auch klar, dass ich die TObjectList einsetzen werde, weil hier die Verwaltung viel komfortabler ist (z.B. auch dein beschriebenes Löschen).
Ich hatte auch gelesen, dass man die TObjectList an eine Klasse anpassen sollte (wegen Typensicherheit).
Im Prinzip genau das wie grenzgaenger es vorgeschlagen hat.

Das versuche ich gerade zu verstehen, habe da aber noch Probleme mit der Implementierung von eigenen Funktionen (nichtdeklarierter Bezeichner...)

Einen schönen Sonntag noch!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  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 06:36 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