![]() |
Re: Fehler beim Abspeichern und Laden
ich habe beigebracht bekommen, dass man auf ein Drücken des OK-Buttons beim Lade-/Speicherfenster am genauesten mit
Delphi-Quellcode:
eingehen kann!
if (SD_Save.Execute=true) then
@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; |
Re: Fehler beim Abspeichern und Laden
Zitat:
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) |
Re: Fehler beim Abspeichern und Laden
Zitat:
Die Gründe wurden schon mehrfach hier im Forum erklärt. |
Re: Fehler beim Abspeichern und Laden
ok, ich werde meinem Lehrer seinen Fehler unter die nase reiben!
:twisted: 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:-( |
Re: Fehler beim Abspeichern und Laden
Zitat:
Delphi-Quellcode:
SD_Save.FileName
|
Re: Fehler beim Abspeichern und Laden
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 |
Re: Fehler beim Abspeichern und Laden
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!^^ |
Re: Fehler beim Abspeichern und Laden
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 |
Re: Fehler beim Abspeichern und Laden
Liste der Anhänge anzeigen (Anzahl: 1)
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:
das laden/speichern geht jetzt, war ein fehler bei der längensetzung des arrays sowie einige SaveDialog/OpenDialog fehleingestellungen!
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. 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!^^) |
Re: Fehler beim Abspeichern und Laden
Hallo,
Breakpoint drauf und nachsehen. Sorry, aber ich verstehe deinen Code überhaupt nicht. Ich sehe kein Code ala CB_Raum.Items.Add Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz