Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Liste Speichern (https://www.delphipraxis.net/139915-liste-speichern.html)

Schnittcher 8. Sep 2009 11:02


Liste Speichern
 
Hallo,

wie kann ich eine IInterfaceList speichern?

SaveToFile gibt es dort ja nicht.

Gruß,
Schnittcher

Forlan 8. Sep 2009 11:03

Re: Liste Speichern
 
Such hier mal nach Hier im Forum suchenAssignfile, Hier im Forum suchenWrite, und Hier im Forum suchenTextfile....

Oder du benutzt inis.

MfG,

Schnittcher 8. Sep 2009 11:48

Re: Liste Speichern
 
Hallo,

ich habe es jetzt so versucht:

Delphi-Quellcode:
procedure TForm1.cmdListSpeichernClick(Sender: TObject);
var
  i: integer;
  pAuto: IAuto;
  myfile: TextFile;
begin
  for i := 0 to AutoList.Count do
  begin
    pAuto := AutoList.Items[x];
  AssignFile(myFile, 'c:\Test.txt');
  WriteLn(myfile, 'Name:', pAuto.ErgebnisName, 'KW:', pAuto.ErgebnisKW, 'PS:',
    pAuto.ErgebnisPS);
  end;
end;
Aber ich bekomme jetzt einen I/O Error 103.

Kann mir da jemand helfen?

Gruß,
Schnittcher

Mithrandir 8. Sep 2009 11:54

Re: Liste Speichern
 
Zitat:

103
Datei nicht geöffnet
Wird von CloseFile, Read, Write, Seek Eof, FilePos FileSize, Flush, BlockRead oder
BlockWrite gemeldet, wenn die Datei nicht geöffnet ist.
Delphi-Quellcode:
procedure TForm1.cmdListSpeichernClick(Sender: TObject);
var
  i: integer;
  pAuto: IAuto;
  myfile: TextFile;
begin
  AssignFile(myFile, 'c:\Test.txt');
  Rewrite(myFile);
  for i := 0 to AutoList.Count do
  begin
    pAuto := AutoList.Items[x];
    WriteLn(myfile, 'Name:', pAuto.ErgebnisName, 'KW:', pAuto.ErgebnisKW, 'PS:',
      pAuto.ErgebnisPS);
  end;
  CloseFile(myFile);
end;
Probier mal den Code oben. Ist nicht getestet. Ich habe bei dir Delphi-Referenz durchsuchenReWrite und Delphi-Referenz durchsuchenCloseFile vermisst. Außerdem sollte es eigentlich reichen, der Variablen einmal am Schleifenanfang eine Datei zuzuweisen.

Schnittcher 8. Sep 2009 11:57

Re: Liste Speichern
 
Hallo

jetzt bekomme ich I/O error 32. (Den Error hatte ich eben auch schon als ich "Rewrite(myFile);" mal drin hatte.

Gruß,
Schnittcher

Mithrandir 8. Sep 2009 11:59

Re: Liste Speichern
 
Dann vermute ich mal, dass du die Datei irgendwo im Code nochmal benutzt, oder?

Schnittcher 8. Sep 2009 11:59

Re: Liste Speichern
 
Hallo,

nein die Datei benutze ich nur an dieser Stelle.

Gruß,
Schnittcher

Klaus01 8. Sep 2009 12:02

Re: Liste Speichern
 
Zitat:

Zitat von MSDN
ERROR_SHARING_VIOLATION 32 (0x20)
The process cannot access the file because it is being used by another process.

Zu jedem Reset oder auch Rewrite gehöhrt ein CloseFile.
Ansonsten bleibt das FileHandle geöffnet.

Grüße
Klaus

Schnittcher 8. Sep 2009 12:06

Re: Liste Speichern
 
Hallo,

es hat gerade 1 mal geklappt und jetzt geht es nicht mehr, jetzt kommt wieder der I/O error 32.


Zitat:

Zitat von Klaus01
Zitat:

Zitat von MSDN
ERROR_SHARING_VIOLATION 32 (0x20)
The process cannot access the file because it is being used by another process.

Zu jedem Reset oder auch Rewrite gehöhrt ein CloseFile.
Ansonsten bleibt das FileHandle geöffnet.

Grüße
Klaus

Was meinst du kann ich tun?

Gruß,
Schnittcher

Mithrandir 8. Sep 2009 12:11

Re: Liste Speichern
 
Zitat:

Zitat von Schnittcher
Was meinst du kann ich tun?

Einen Breakpoint setzen und durch den Code steppen, um zu sehen, was nicht passt.

P.S.:

Zitat:

for i := 0 to AutoList.Count do
begin
pAuto := AutoList.Items[x];
Da stimmt aber was nicht, oder? :gruebel:

Schnittcher 8. Sep 2009 12:13

Re: Liste Speichern
 
Hallo,

oh mein Gott, sowas kann auch nur mir passieren...
Und ich suche den Fehler wieso immer "list index out of bounds (-1)" kommt.
Danke.

Ich bin noch neu.

Gruß,
Schnittcher
Zitat:

Zitat von Daniel G
Zitat:

Zitat von Schnittcher
Was meinst du kann ich tun?

Einen Breakpoint setzen und durch den Code steppen, um zu sehen, was nicht passt.

P.S.:

Zitat:

for i := 0 to AutoList.Count do
begin
pAuto := AutoList.Items[x];
Da stimmt aber was nicht, oder? :gruebel:

Jetzt ist der Error auch weg und er speichert die Liste.

Danke nochmal an alle. :dp:

Gruß,
Schnittcher

Mithrandir 8. Sep 2009 12:19

Re: Liste Speichern
 
Zitat:

Zitat von Schnittcher
Und ich suche den Fehler wieso immer "list index out of bounds (-1)" kommt.

Das hättest du vielleicht noch dazu schreiben sollen, dass auch dieser Fehler kommt. ;) Denn dann bricht er vor "CloseFile" ab, und kann somit auch das Dateihandle nicht mehr freigeben. ;)

Schnittcher 8. Sep 2009 12:25

Re: Liste Speichern
 
Hallo,

der Fehler kam ja dann nicht mehr.

Gruß,
Schnittcher

mkinzler 8. Sep 2009 12:25

Re: Liste Speichern
 
Delphi-Quellcode:
for i := 0 to AutoList.Count-1 do

Schnittcher 8. Sep 2009 12:30

Re: Liste Speichern
 
Hallo,

Zitat:

Zitat von mkinzler
Delphi-Quellcode:
for i := 0 to AutoList.Count-1 do


danke, aber es geht schon alles.

Gruß,
Schnittcher

leddl 8. Sep 2009 14:16

Re: Liste Speichern
 
Zitat:

Zitat von Schnittcher
danke, aber es geht schon alles.

Und wenn du mkinzlers Rat beherzigst, dann auch fehlerfrei :zwinker:
Count gibt dir die Anzahl zurück. Durchläufst du also die Schleife von 0 bis Count dann gehst du einen Schritt zu weit. Das letzte Element hat nämlich den Index Count-1 ;)

Luckie 8. Sep 2009 14:21

Re: Liste Speichern
 
Das haben wir ihm schon mal erklärt.

Schnittcher 8. Sep 2009 14:31

Re: Liste Speichern
 
Hallo,

es hat sich doch jetzt auch erledigt.
Ich hatte das eben einfach nur vergessen. :)

Gruß,
Schnittcher


Alle Zeitangaben in WEZ +1. Es ist jetzt 13: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