AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi SaveToFile [TStringgrid] ohne Tsavedialog
Thema durchsuchen
Ansicht
Themen-Optionen

SaveToFile [TStringgrid] ohne Tsavedialog

Ein Thema von danku · begonnen am 10. Mai 2006 · letzter Beitrag vom 15. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#1

SaveToFile [TStringgrid] ohne Tsavedialog

  Alt 10. Mai 2006, 16:12
Ich möchte nur die 1.Spalte einer TStringGrid speichern. Es soll kein Tsavedialog geoeffnet werden.
ich arbeite ohne Tstrings!

ausgelesen mit:

Delphi-Quellcode:
sgfiles.RowCount := OpenDialog1.Files.Count + 1;
   for i:=0 to Opendialog1.files.count -1 do
   begin
   sgfiles.cells[0,1 + i]:= (OpenDialog1.Files[i]);
   Savedialog1.InitialDir:=GetCurrentDir;
Versuch des Speicherns:

Delphi-Quellcode:
Savedialog1.InitialDir:=GetCurrentDir;
   for i:= 0 to sgfiles.rowcount-1 do
   sgfiles.rows.SaveToFile('GetCurrentDir' + sgfiles.Cells[0,i].AsString);
// klassentyp oder recordtyp wird erfordet. ich weiß. for i := 0 to sl.Count - 1 do aber kann ich das auch ohne eine Tstringlist realisieren? wenn ja wie?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: SaveToFile [TStringgrid] ohne Tsavedialog

  Alt 10. Mai 2006, 16:41
Probiere es so:

Delphi-Quellcode:
var
  fn: TFileName;
begin
  fn := IncludeTrailingPathDelimiter(GetCurrentDir)
      + 'demo.txt';
  with sgFiles do
    Cols[FixedCols].SaveToFile(fn);
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#3

Re: SaveToFile [TStringgrid] ohne Tsavedialog

  Alt 10. Mai 2006, 16:42
Zitat von danku:
Es soll kein Tsavedialog geoeffnet werden.
muss ja auch nicht .. der is ja nur da, damit der User nen ort angeben kann.
Wenn du dich dazu überwinden könntest eine TStringList zu nehmen könntest du mit .SaveToFile() arbeiten.
EDIT: ach ja .. und wenn nicht dann hilft evtl. das hier bzw. [dp]Dyn* Array Speichern[/dp]

EDIT2: ach man kann sogar Cols[FixedCols].SaveToFile(fn); machen?? cool
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: SaveToFile [TStringgrid] ohne Tsavedialog

  Alt 10. Mai 2006, 19:09
Zitat von marabu:
Probiere es so:

Delphi-Quellcode:
var
  fn: TFileName;
begin
  fn := IncludeTrailingPathDelimiter(GetCurrentDir)
      + 'demo.txt';
  with sgFiles do
    Cols[FixedCols].SaveToFile(fn);
end;
Grüße vom marabu

wofür steht die demo.txt?
außerdem funzt deine methode nicht
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: SaveToFile [TStringgrid] ohne Tsavedialog

  Alt 10. Mai 2006, 20:09
Hallo Daniel,

Zitat von danku:
wofür steht die demo.txt?
es ist nur ein Platzhalter - ich dachte du würdest selbst die noch nötigen Änderungen machen. Immerhin hast du Pascal als eines deiner Wissensgebiete angegeben.

Zitat von danku:
außerdem funzt deine methode nicht
Es ist höchst unwahrscheinlich, aber was wäre, wenn du einen Fehler bei der Anwendung der Methode gemacht hättest?

Delphi-Quellcode:
uses
  StrUtils;

function SaveColumn(sg: TStringGrid; index: Integer; keepHeader: Boolean = false): Boolean;
var
  fn: TFileName;
begin
  Result := false;
  if sg.RowCount = 0 then
    Exit;
  with TStringList.Create do
  try
    Assign(sg.Cols[index]);
    fn := IncludeTrailingPathDelimiter(GetCurrentDir)
        + Strings[0];
    if not keepHeader then
      Delete(index);
    SaveToFile(fn);
    Result := true;
  finally
    Free;
  end;
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
begin
  ShowMessage(IfThen(SaveColumn(StringGrid, 0), 'holiday', 'kill the cat'));
end;
Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: SaveToFile [TStringgrid] ohne Tsavedialog

  Alt 10. Mai 2006, 22:30
klar das mit dem platzhalter ist mir schon klar aber für mich sieht der überlüssig aus. d.h. der ist gar nicht notwendig.
zum code:
ich meine theoretisch müsste der ja speichern aber praktisch sieht das ganz anders aus.

inhalt von cells[0,1]:='D:\+MUSIK\ashanti_-_cant_stop.mp3'

der speichert nicht obwohl ich noch geaddet habe:
Savedialog1.InitialDir:=GetCurrentDir; damit der weiß in welchen ordnern!

muss vll. das alles vor '\' weg?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: SaveToFile [TStringgrid] ohne Tsavedialog

  Alt 11. Mai 2006, 07:58
Guten Morgen.

Du hast geschrieben, dass du ohne einen SaveDialog speichern möchtest - dann lasse diese Komponente auch einfach weg. Es hilft nicht, wenn du die Eigenschaft InitialDir von SaveDialog auf GetCurrentDir setzt, da die Komponente diese Information nur verwendet um das Navigieren im Dateisystem zu vereinfachen. Den absoluten Dateinamen kannst du einfach bei SaveToFile() selbst eintragen. Dazu kannst du ein Verzeichnis und einen relativen Dateinamen verknüpfen - aber nicht zwei absolute Angaben.

Ich habe jetzt das Gefühl, dass du garnicht den Inhalt der ersten Spalte deines StringGrids speichern willst. Außerdem ist es nicht sinnvoll die Zeichenketten aus deinem StringGrid in eine Datei mit der Erweiterung MP3 zu schreiben. Das Beste wird sein, wenn du mal einen screen shot von deinem StringGrid mit ein paar Daten anhängst und dazu genau beschreibst, was du erreichen willst.

Freundliche Grüße

marabu
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: SaveToFile [TStringgrid] ohne Tsavedialog

  Alt 11. Mai 2006, 08:35
naja man kann die dateien über einen topendialog in die tstringgrid laden.
das dumme ist noch, dass der komplette pfad mit in die zellen eingebunden wird.

der wiedergebene inhalt des topendialogs steht in spalte 1.
in spalte 2 steht der originalname der date und in der 2.spalte die dateigrössse.

anhand eines filters kann man die funktion "sonderzeichen entfernen" erweitern.
weitere methoden sind: großschreibung der wörter (in spalte 1) und das ganze in Winamp öffnen.

mein problem besteht noch bei der save-methode.

bild meines progs ist im anhang
Miniaturansicht angehängter Grafiken
bild1_203.jpg  
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: SaveToFile [TStringgrid] ohne Tsavedialog

  Alt 11. Mai 2006, 09:18
Wenn du einen vollständigen Dateinamen hast und möchtest den Namen ohne Pfadanteil, dann verwende die Funktion ExtractFileName().

Meine Speicherroutine in Beitrag #5 geht aufgrund von Informationslücken davon aus, dass der Dateiname in der Titelzeile steht. Hier jetzt eine angepasste Version, der du den Speichernamen mitgeben kannst:

Delphi-Quellcode:
uses
  StrUtils;

function SaveColumn(fn: TFileName; sg: TStringGrid; index: Integer;
  keepHeader: Boolean = false): Boolean;
begin
  Result := false;
  if sg.RowCount = 0 then
    Exit;
  with TStringList.Create do
  try
    Assign(sg.Cols[index]);
    if not keepHeader then
      Delete(index);
    SaveToFile(fn);
    Result := true;
  finally
    Free;
  end;
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
begin
  ShowMessage(IfThen(SaveColumn('playlist.txt', StringGrid, 0), 'holiday', 'kill the cat'));
end;
marabu
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: SaveToFile [TStringgrid] ohne Tsavedialog

  Alt 11. Mai 2006, 14:13
jetzt weiß ich erst mal was du meinst

ich will nicht die spalte1 in einer txt(dein platzhalter ) speichern sondern die dateien, die man per topendialog in die 1.spalte lädt, die dateien sollen gespeichert werden. (z.b. wenn man eben sonderzeichen entfernt und speichern drückt, dann soll die urspgs.datei umbenannt werden.

wieso speichert der überhaupt deine .txt in den ordner, wo die mp3s sind?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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