AGB  ·  Datenschutz  ·  Impressum  







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

Fehler beim Abspeichern und Laden

Ein Thema von Mr Hyde · begonnen am 3. Mär 2009 · letzter Beitrag vom 5. Mär 2009
Antwort Antwort
Seite 2 von 3     12 3      
Mr Hyde

Registriert seit: 15. Feb 2009
Ort: Schwalbach
12 Beiträge
 
Delphi 7 Professional
 
#11

Re: Fehler beim Abspeichern und Laden

  Alt 3. Mär 2009, 20:16
ich habe beigebracht bekommen, dass man auf ein Drücken des OK-Buttons beim Lade-/Speicherfenster am genauesten mit
if (SD_Save.Execute=true) then eingehen kann!

@DeddyH: wenn ich Abspeichern möchte mit hilfe des 'speichern unter ...' fenster.

diese quelltext-stelle:
Delphi-Quellcode:
procedure TForm1.Speichernunter1Click(Sender: TObject);
begin
if (SD_Save.Execute=true) then
   begin
    for i:=0 to (SG_Inv.RowCount-1) do
       begin
       inventar[i].Raum:=SG_Inv.Cells[0,i+1];
       inventar[i].Typ:=SG_Inv.Cells[1,i+1];
       inventar[i].System:=SG_Inv.Cells[2,i+1];
       inventar[i].Benutzer:=SG_Inv.Cells[3,i+1];
       inventar[i].IP:=SG_Inv.Cells[4,i+1];
       end;
   pfad:=SD_Save.InitialDir;
    try
     AssignFile(datei,pfad);
     ReWrite(datei);
     u:=0;
     while u<=(length(inventar)-1) do
        begin
        Write(datei,inventar[u]);
        u:=u+1;
        end;
     CLoseFile(datei);
    except
    ShowMessage('Die Datei konnte nicht gespeichert werden. Speicherpfad/Speichername ungültig oder nicht genügend freier Speicherplatz auf dere Festplatte verfügbar.');
    end;
   end;
end;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Fehler beim Abspeichern und Laden

  Alt 3. Mär 2009, 20:31
Zitat:
ich habe beigebracht bekommen, dass man auf ein Drücken des OK-Buttons beim Lade-/Speicherfenster am genauesten mit

if (SD_Save.Execute=true) then eingehen kann!
Dann hat man dir was Falsches beigebracht.
Da die .Execute()-Methode ja schon einen Boolean zurückliefert brauchst du diesen nicht mehr durch ein Vergleich erzeugen.
Zudem ist True nicht eindeutig deklariert ( False = 0 und True <> 0)- Würde einen Methode nun etwas anderes als 1 (oder 0) zurückliefern ( was ja richtig wäre würde dein Vergleich ein False generieren)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#13

Re: Fehler beim Abspeichern und Laden

  Alt 3. Mär 2009, 20:33
Zitat von Mr Hyde:
ich habe beigebracht bekommen, dass man auf ein Drücken des OK-Buttons beim Lade-/Speicherfenster am genauesten mit
if (SD_Save.Execute=true) then eingehen kann!
Schick uns mal bitte deinen Lehrer her ... für dieses =true und =false bekommt der gleich mal ein paar auf die Finger.
Die Gründe wurden schon mehrfach hier im Forum erklärt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Mr Hyde

Registriert seit: 15. Feb 2009
Ort: Schwalbach
12 Beiträge
 
Delphi 7 Professional
 
#14

Re: Fehler beim Abspeichern und Laden

  Alt 3. Mär 2009, 20:49
ok, ich werde meinem Lehrer seinen Fehler unter die nase reiben!


naja....also hab des nun alles ersetzt und so geschrieben wies hier drinnen ist......doh leider noch immer ohne Erfolg

da ihr ja nun seht/mitbekommen habt wieviel mein lehrer weis, kann wohl auch er mir bei meinem Problem nciht weiterhelfen...........zumal ich ihn erst nächsten Dienstag wieder habe....

ich bin ehrlich gesagt einer der besten unserer Stufe und bekomme die probleme eigendlich immer in 10-20 minuten gelöst, doch hier versagt mein latein leider
  Mit Zitat antworten Zitat
Crazy Ivan
(Gast)

n/a Beiträge
 
#15

Re: Fehler beim Abspeichern und Laden

  Alt 3. Mär 2009, 20:52
Zitat von Mr Hyde:
Delphi-Quellcode:
   pfad:=SD_Save.InitialDir;
     AssignFile(datei,pfad);
den pfad des dialogs bekommst du mit

SD_Save.FileName
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Fehler beim Abspeichern und Laden

  Alt 3. Mär 2009, 20:56
Hallo Mr Hyde,

da meine Zeit als Schüler schon etwas her ist, würde mich mal interessieren welche Vorgaben Du hast.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Mr Hyde

Registriert seit: 15. Feb 2009
Ort: Schwalbach
12 Beiträge
 
Delphi 7 Professional
 
#17

Re: Fehler beim Abspeichern und Laden

  Alt 3. Mär 2009, 21:06
ok, also...ich schreibe das programm so zusagen uaf eigene faust

wir solten ursprünglich (in nem nebenfach namens visuelle dokumentation) mittels exel ne Tabelle erstellen, mithilfe derer wir das "inventar" einer firma xy an IT-Material a)allgemein auflistung aller geräte und b) mithilfe eines Filters nur bestimmte geräte angezeigt bekommen.

da ich strickter exelgegner bin wollte ich das programm in pascal schreiben, da ich es eigendlich sehr gut kann.....dachte ich zumindest!

(wir fangen in visuelle dokumentation mit netzwerkplanung und sonem zeugs mit nem jungen lehrer und so...aber mein informatiklehrer kommt aus der freien marktwirtschaft und ist angeblich so gut....naja, ich will ihn nicht zu schlecht machen, er ist gut, aber wie man merkt muss auch er noch lernen!^^
  Mit Zitat antworten Zitat
hoika

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

Re: Fehler beim Abspeichern und Laden

  Alt 4. Mär 2009, 06:58
Hallo,

dann zeige doch jetzt mal,
wie der Code aussieht.
Am besten die Unit.pas wie im 1. post
und zusätzlich das ganze Projekt angehängt (ohne Exe).


Heiko
Heiko
  Mit Zitat antworten Zitat
Mr Hyde

Registriert seit: 15. Feb 2009
Ort: Schwalbach
12 Beiträge
 
Delphi 7 Professional
 
#19

Re: Fehler beim Abspeichern und Laden

  Alt 5. Mär 2009, 13:30
entschuldigt die späte antwort, ich habe heute informatik-arbeit geschrieben und musste gestern noch lernen!

also, hier der nun der naktualisierte Queltext:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, Grids;

type
  TInventarDetails = record
     Raum:String[9];
     Typ:String[25];
     bsys:String[90];
     Benutzer:String[90];
     IP:String[16];
  end;

  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    SG_Inv: TStringGrid;
    GroupBox2: TGroupBox;
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    CB_Raum: TComboBox;
    CB_Geraet: TComboBox;
    CB_System: TComboBox;
    CB_Benutzer: TComboBox;
    GroupBox3: TGroupBox;
    GroupBox4: TGroupBox;
    GroupBox5: TGroupBox;
    GroupBox6: TGroupBox;
    GroupBox7: TGroupBox;
    CB_IP: TComboBox;
    Label1: TLabel;
    Button1: TButton;
    Neu1: TMenuItem;
    Laden1: TMenuItem;
    Speichern1: TMenuItem;
    Speichernunter1: TMenuItem;
    N1: TMenuItem;
    Beenden1: TMenuItem;
    Hilfe1: TMenuItem;
    Version1: TMenuItem;
    OD_Oeffnen: TOpenDialog;
    SD_Save: TSaveDialog;
    Button2: TButton;
    Button3: TButton;
    procedure Beenden1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Laden1Click(Sender: TObject);
    procedure Speichern1Click(Sender: TObject);
    procedure Speichernunter1Click(Sender: TObject);
    procedure Neu1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  filter, inventar:array of TInventarDetails;
  datei:file of TInventarDetails;
  i, u: integer;
  Pfad, Raum, Typ, bsys, Nutzer, IP:String;
  kopiert:Boolean;
  runfirst: integer;

implementation

{$R *.dfm}

procedure TForm1.Beenden1Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
SG_Inv.Cells[0,0]:='Raum';
SG_Inv.Cells[1,0]:='Gerätetyp';
SG_Inv.Cells[2,0]:='Betriebssystem';
SG_Inv.Cells[3,0]:='Benutzer';
SG_Inv.Cells[4,0]:='IP - Adresse';
Speichern1.Enabled := false;

end;

procedure TForm1.Laden1Click(Sender: TObject);
begin
  OD_OEFFNEN.Filter := 'Datenbanken (*.db)|*.db| Alle Datein (*.*)| *.*';
 if OD_Oeffnen.Execute then
    begin
    pfad:=OD_Oeffnen.FileName;
    i:=0;
     try
     AssignFile(datei,pfad);
     Reset(datei);
      while not eof(datei) do
         begin
         setLength(inventar,i+1);
         Read(datei,inventar[i]);
         SG_Inv.Cells[0,i+1]:=inventar[i].Raum;
         SG_Inv.Cells[1,i+1]:=inventar[i].Typ;
         SG_Inv.Cells[2,i+1]:=inventar[i].bsys;
         SG_Inv.Cells[3,i+1]:=inventar[i].Benutzer;
         SG_Inv.Cells[4,i+1]:=inventar[i].IP;
         SG_Inv.RowCount:=i+2;
         i:=i+1;
         end;
      CloseFile(datei);
     except
      ShowMessage('Die Datei konnte nicht geöffnet werden oder existiert nicht.');
     end;
    {for i:=0 to (length(inventar)-1) do
      begin
      if (inventar[i].Raum>inventar[i-1].Raum) then
          begin
          CB_Raum.Items.Add(inventar[i].Raum);
          end;
      if (inventar[i].Typ>inventar[i-1].Typ) then
          begin
          CB_Raum.Items.Add(inventar[i].Typ);
          end;
      if (inventar[i].bsys>inventar[i-1].bsys) then
          begin
          CB_Raum.Items.Add(inventar[i].bsys);
          end;
      if (inventar[i].Benutzer>inventar[i-1].Benutzer) then
          begin
          CB_Raum.Items.Add(inventar[i].Benutzer);
          end;
      if (inventar[i].IP>inventar[i-1].IP) then
          begin
          CB_Raum.Items.Add(inventar[i].IP);
          end;
       end;}

      setlength(filter, 5);
for i:=0 to 4 do
begin
filter[i].Raum := '';
filter[i].Typ :=''             ;
filter[i].bsys :=''          ;
filter[i].Benutzer :=''     ;
filter[i].IP :='';
end;
     end;
end;

procedure TForm1.Speichern1Click(Sender: TObject);
begin
for i:=1 to (SG_Inv.RowCount-1) do
   begin
         SetLength(inventar, i);
         inventar[i-1].Raum:=SG_Inv.Cells[0,i];
         inventar[i-1].Typ:=SG_Inv.Cells[1,i];
         inventar[i-1].bsys:=SG_Inv.Cells[2,i];
         inventar[i-1].Benutzer:=SG_Inv.Cells[3,i];
         inventar[i-1].IP:=SG_Inv.Cells[4,i];
   end;
 try
  AssignFile(datei,pfad);
  ReWrite(datei);
  u:=0;
  while u<=length(inventar) do
     begin
     Write(datei,inventar[u]);
     u:=u+1;
     end;
  CLoseFile(datei);
 except
 ShowMessage('Sie haben bisher noch nicht abgespeichert. Bitte speichern Sie die Datei mit der "Speichern unter ..." Option.');
 end;
end;

procedure TForm1.Speichernunter1Click(Sender: TObject);
begin
SD_SAVE.Filter := 'Datenbanken (*.db)|*.db| Alle Datein (*.*)| *.*';
if SD_Save.Execute then
   begin
    for i:=1 to (SG_Inv.RowCount-1) do
       begin
       SetLength(inventar, i);
       inventar[i-1].Raum:=SG_Inv.Cells[0,i];
       inventar[i-1].Typ:=SG_Inv.Cells[1,i];
       inventar[i-1].bsys:=SG_Inv.Cells[2,i];
       inventar[i-1].Benutzer:=SG_Inv.Cells[3,i];
       inventar[i-1].IP:=SG_Inv.Cells[4,i];
       end;
   pfad:=SD_Save.FileName;
    try
     AssignFile(datei,pfad);
     ReWrite(datei);
     u:=0;
     while u<=(length(inventar)-1) do
        begin
        Write(datei,inventar[u]);
        u:=u+1;
        end;
     CLoseFile(datei);
     Speichern1.Enabled := false;
    except
    ShowMessage('Die Datei konnte nicht gespeichert werden. Speicherpfad/Speichername ungültig oder nicht genügend freier Speicherplatz auf dere Festplatte verfügbar.');
    end;
   end;
end;

procedure TForm1.Neu1Click(Sender: TObject);
begin
SG_Inv.RowCount:=2;
SG_Inv.Cells[0,1]:='';
SG_Inv.Cells[1,1]:='';
SG_Inv.Cells[2,1]:='';
SG_Inv.Cells[3,1]:='';
SG_Inv.Cells[4,1]:='';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
SG_Inv.RowCount:=SG_Inv.RowCount+1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin

if (kopiert=true) then
   begin
   SG_Inv.RowCount:=2;
   SG_Inv.Cells[0,1]:='';
   SG_Inv.Cells[1,1]:='';
   SG_Inv.Cells[2,1]:='';
   SG_Inv.Cells[3,1]:='';
   SG_Inv.Cells[4,1]:='';

   for i:=0 to (length(filter)-1) do
      begin
      if (CB_Raum.ItemIndex>-1) then
         begin
         if not(CB_Raum.Text=inventar[i].Raum) then
            begin
            for u:=i+1 to length(inventar) do
               begin
               filter[u-1]:=filter[u];
               SetLength(filter,length(filter)-1);
               end;
            end;
         end;
      if (CB_Geraet.ItemIndex>-1) then
         begin
         if not(CB_Geraet.Text=inventar[i].Typ) then
            begin
            for u:=i+1 to length(inventar) do
               begin
               filter[u-1]:=filter[u];
               SetLength(filter,length(filter)-1);
               end;
            end;
         end;
      if (CB_System.ItemIndex>-1) then
         begin
         if not(CB_System.Text=inventar[i].bsys) then
            begin
            for u:=i+1 to length(inventar) do
               begin
               filter[u-1]:=filter[u];
               SetLength(filter,length(filter)-1);
               end;
            end;
         end;
      if (CB_Benutzer.ItemIndex>-1) then
         begin
         if not(CB_Benutzer.Text=inventar[i].Benutzer) then
            begin
            for u:=i+1 to length(inventar) do
               begin
               filter[u-1]:=filter[u];
               SetLength(filter,length(filter)-1);
               end;
            end;
         end;
      if (CB_IP.ItemIndex>-1) then
         begin
         if not (CB_IP.Text=inventar[i].IP) then
            begin
            for u:=i+1 to length(inventar) do
               begin
               filter[u-1]:=filter[u];
               SetLength(filter,length(filter)-1);
               end;
            end;
         end;
      end;
   for i:=0 to length(filter) do
      begin
      SG_Inv.RowCount:=i+2;
      SG_Inv.Cells[0,i+1]:=filter[i].Raum;
      SG_Inv.Cells[1,i+1]:=filter[i].Typ;
      SG_Inv.Cells[2,i+1]:=filter[i].bsys;
      SG_Inv.Cells[3,i+1]:=filter[i].Benutzer;
      SG_Inv.Cells[4,i+1]:=filter[i].IP;
      end;
   end
else
   begin
   ShowMessage('Bitte erst die Daten in den Zwischenspeicher kopieren.');
   end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
for i:=0 to (SG_Inv.RowCount-1) do
   begin
   SetLength(filter, i+1);
   filter[i].Raum:=SG_Inv.Cells[0,i+1];
   filter[i].Typ:=SG_Inv.Cells[1,i+1];
   filter[i].bsys:=SG_Inv.Cells[2,i+1];
   filter[i].Benutzer:=SG_Inv.Cells[3,i+1];
   filter[i].IP:=SG_Inv.Cells[4,i+1];
   end;
   kopiert:=true;
   runfirst := 1;

   for i:=0 to (length(filter)-1) do
        begin
        if runfirst = 1 then
                begin
                filter[i].Raum := SG_INV.Cells[0, i+1];
                filter[i].Typ := SG_INV.Cells[1, i+1];
                filter[i].bsys := SG_INV.Cells[2, i+1];
                filter[i].Benutzer := SG_INV.Cells[3, i+1];
                filter[i].IP := SG_INV.Ce´lls[4, i+1];
                runfirst:=0;
                end
                else
                
                end;



end;

end.
das laden/speichern geht jetzt, war ein fehler bei der längensetzung des arrays sowie einige SaveDialog/OpenDialog fehleingestellungen!

hab nun nur das problem, dass er mir ALLE optionen in die erste combobox, und nicht wie gewollt in die jeweils dafür vorgesehene combobox schreibt.

anbei die Dateien!(ohne exe!^^)
Angehängte Dateien
Dateityp: zip netzwerke_inventarliste_200.zip (15,4 KB, 1x aufgerufen)
  Mit Zitat antworten Zitat
hoika

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

Re: Fehler beim Abspeichern und Laden

  Alt 5. Mär 2009, 15:19
Hallo,

Breakpoint drauf und nachsehen.
Sorry, aber ich verstehe deinen Code überhaupt nicht.

Ich sehe kein Code ala CB_Raum.Items.Add


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 22:54 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