AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stringgrid mag keine Dateinamen?!

Ein Thema von bkgmjo · begonnen am 4. Okt 2008 · letzter Beitrag vom 5. Okt 2008
Antwort Antwort
bkgmjo

Registriert seit: 12. Apr 2008
6 Beiträge
 
#1

Stringgrid mag keine Dateinamen?!

  Alt 4. Okt 2008, 13:25
Hallo,
bastel grad an einem Telefonbuch, das text und auch bilder speichern kann. momentan habe ich ein paar editfelder und ein stringgrid. in die editfelder werden die kontaktdaten eingetragen und durch den "übernehmen" button ins stringgrid kopiert. dieses wird dann als *.txt zelle für zelle als neue zeile beim beenden des programms gespeichert. funktioniert auch alles wunderbar nur....er speichert keinen dateipfad von einem bild. beispielsweise endet der string 'C:\Dokumente und Einstellungen\user\desktop\bild.jpg' als leere zeile in meiner textdatei. wenn ich manuell einen buchstabensalat ins stringgrid eintrage, wird dieser problemlos gespeichert.

eine verschwörung oder ist edit.text nicht gleich edit.text? alle anderen funktionieren. nochmal kurz wie ichs momentan realisiert hab:

openpicturedialog
-> .filename wird in editfeld gespeichert
-> bei buttonklick wird das editfeld ins stringgrid kopiert
-> bei beenden des programmes wird das stringgrid mit jeder zelle als neue zeile in textdatei gespeichert.

vielen dank im voraus
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#2

Re: Stringgrid mag keine Dateinamen?!

  Alt 4. Okt 2008, 16:23
da ein Dateiname auch nur ein String ist, sollte es da keinen Unterschied geben, es sei denn du hast irgendeinen Implementationsfehler drin. um dem auf die Spur zu kommen, bräuchten wir schon bisschen code.

oder versuchst du das bild mit in die gleiche Datei zu schreiben? dann geht das nicht mit "Textdateien", da bildformate normalerweise (außer svg u.ä.) binärdateien sind und somit Zeichen enthalten, die im Textformat nicht sichtbar sind (afair < #31). #0 z.b. "schneidet" in der Anzeige alles nachfolgende ab.

Gruß Frank
  Mit Zitat antworten Zitat
bkgmjo

Registriert seit: 12. Apr 2008
6 Beiträge
 
#3

Re: Stringgrid mag keine Dateinamen?!

  Alt 4. Okt 2008, 18:39
Wenns weiter hilft...hier mal die relevanten prozeduren.
kann da eigentlich nichts besondres entdecken.

Delphi-Quellcode:
//Bild wird geladen und der Dateiname im Editfeld gespeichert (funktioniert)

procedure TForm1.BBildClick(Sender: TObject);
begin
  if OpenPictureDialog1.Execute then
    begin
      Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
      EBildPfad.Text := OpenPictureDialog1.FileName;
      OpenPictureDialog1.FileName := '';
    end;
end;
Delphi-Quellcode:
//Daten aus den Editfeldern werden ausgelesen und im Stringgrid gespeichert (funktioniert)

procedure TForm1.EintragSpeichern;
var
  i : integer;
  liste : TStrings;

begin
  liste := TStringList.Create;
  liste.Add(EVorname.Text);

  ... //noch ca. 20 andere

  liste.Add(EBildPfad.Text);
  for i := 0 to liste.Count - 1 do
    begin
      SGListe.Cells[i, SGListe.Row] := Liste.Strings[i];
    end;
end;
Delphi-Quellcode:
//Stringgrid wird Zelle für Zelle in einer Textdatei gespeichert. (funktioniert nicht vollständig)

procedure TForm1.DateiSchreiben;
var
  f: TextFile;
  i, k: Integer;
begin
  AssignFile(f, 'inhalt.txt');
  Rewrite(f);
  with SGListe do
  begin
    Writeln(f, ColCount);
    Writeln(f, RowCount);
    for i := 0 to ColCount - 1 do
      for k := 0 to RowCount - 1 do
        Writeln(F, Cells[i, k]);
  end;
  CloseFile(F);
end;
Hatte inzwischen den Gedanken, dass es evtl. an writeln() liegt und dort keine Pfade benutzt werden können. Kann natürlich auch völliger Unsinn sein. Wie gesagt, jedmöglicher Buchstabensalat funktioniert. Dateipfade nicht. Wenn du willst, kann ich dir auch gern das ganze projekt als rar schicken.

Edit: nein, es wird nur der Pfad gespeichert. Das Bild bleibt wo es ist.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Stringgrid mag keine Dateinamen?!

  Alt 4. Okt 2008, 19:29
Bei AssignFile solltest Du auf jeden Fall einen absoluten Pfad benutzen.
  Mit Zitat antworten Zitat
bkgmjo

Registriert seit: 12. Apr 2008
6 Beiträge
 
#5

Re: Stringgrid mag keine Dateinamen?!

  Alt 4. Okt 2008, 20:33
und das bringt mir bei meinem problem genau was?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Stringgrid mag keine Dateinamen?!

  Alt 5. Okt 2008, 13:58
Hallo,

ein kleines Bsp.-Programm funktioniert
(c:\tmp muss existieren)

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  TxtFile: TextFile;
  sLine : String;
begin
  sLine:= 'C:\Dokumente Und Einstellungen\bla.txt';

  AssignFile(TxtFile, 'c:\tmp\test.txt');
  Rewrite(TxtFile);
  WriteLn(TxtFile, sLine);
  CloseFile(TxtFile);
end;
Das Problem ist, dass WriteLn nur 255 Zeichen schreiben kann,
wenn String verwendet wird (auch wenn der String länger ist).


Umweg über PChar.


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  TxtFile: TextFile;
  sLine : String;
  sLine2 : String;
  i : Integer;
  szLine2 : PChar;
begin
  sLine:= 'C:\Dokumente Und Einstellungen\bla.txt';

  sLine2:= '';
  for i:= 1 to 30 do
  begin
    sLine2:= sLine2+'1234567890';
  end;

 // sLine2 hat jetzt 300 Zeichen.

  GetMem(szLine2, Length(sLine2)+1);
  StrPCopy(szLine2, sLine2);

  AssignFile(TxtFile, 'c:\tmp\test.txt');
  Rewrite(TxtFile);
  WriteLn(TxtFile, sLine);
  WriteLn(TxtFile, szLine2);
  CloseFile(TxtFile);

  FreeMem(szLine2);
end;

Heiko

PS: try finally fehlt.
Heiko
  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 02:33 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