AGB  ·  Datenschutz  ·  Impressum  







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

labels abspeichern

Ein Thema von tabl · begonnen am 3. Aug 2009 · letzter Beitrag vom 3. Aug 2009
Antwort Antwort
Seite 1 von 2  1 2      
tabl

Registriert seit: 27. Apr 2009
Ort: 31582
19 Beiträge
 
Delphi 7 Personal
 
#1

labels abspeichern

  Alt 3. Aug 2009, 21:53
ich will ne menge labels abspeichern übern 2 arrays.
aber irgenwie will er die labels wenn er sie geladen hat nicht akktualisren bzw überschreiben. warum?
zuständiger quelltext ausschnitt:

Delphi-Quellcode:
procedure TForm2.saveClick(Sender: TObject);
var
  datei : file of tlabel;
  i :integer;
begin
  try
   if savedialog.Execute then
  begin
    assignfile(datei,savedialog.FileName);
    rewrite(datei);
    for i := 0 to 12 do
      write(datei,mainunit.lblarray[i]);
    for i := 0 to 19 do
      write(datei,mo1);

  end;
  finally
  closefile(datei);end;
end;

procedure TForm2.LadenClick(Sender: TObject);
var datei : file of tlabel;
    i : integer;
begin
  try
  if opendialog.Execute then
  begin
    assignfile(datei,opendialog.FileName);
    reset(datei);
    for i:=0 to 12 do
      read(datei,lblarray[i]);
    for i := 0 to 19 do
      read(datei,mo1);
  end;
  finally
  closefile(datei);
  end;
end;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: labels abspeichern

  Alt 3. Aug 2009, 21:54
Bei Klassen geht das so nicht.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: labels abspeichern

  Alt 3. Aug 2009, 21:55
array of tlabel enthält nur die Objekt-intstanz-variablen ... du mußt schon den Inhalt der Labels speichern.
$2B or not $2B
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: labels abspeichern

  Alt 3. Aug 2009, 22:03
Dein try/finally ist gefährlich gebaut und kann zu undefiniertem Verhalten führen!

Hintergrund: datei ist eine lokale Variable und enthält somit zufällige Werte. Die Wahrscheinlichkeit, dass der in der Struktur enthaltene FileHandle Member ungleich INVALID_HANDLE_VALUE ist, ist sehr hoch. Dadurch wird mit dem CloseFile() im Fehlerfall (vor dem Öffnen) bzw. wenn SaveDialog abgebrochen wird ein ganz anderes File Handle geschlossen.

Das try vom try/finally muss immer nach dem AssignFile() erscheinen, da AssignFile() die Struktur komplett initialisiert.
  Mit Zitat antworten Zitat
tabl

Registriert seit: 27. Apr 2009
Ort: 31582
19 Beiträge
 
Delphi 7 Personal
 
#5

Re: labels abspeichern

  Alt 3. Aug 2009, 22:10
ich brauch eig nur die farbe und die caption von den label. kann ich in ein "file of tlabel" die eigenschfaten einfach so reinspeichern? glaube ich zwar nicht aber frage ist es wert^^.
welche anderen möglichkeiten gibt es?

@muetze1. das try is im nur eingebaut um zu sehen, ob er zwinschen durch abbricht ohne das es angezeigt wird. wird also noch verbessert.


(sry war eben nicht ganz dabei^^)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: labels abspeichern

  Alt 3. Aug 2009, 22:13
@tabl: Welche Sprache ist das bitte? Lese den Beitrag noch einmal durch und korrigiere ihn so, das ein normaler Leser ihn auch verstehen kann.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: labels abspeichern

  Alt 3. Aug 2009, 22:35
möglichkeiten: http://www.delphipraxis.net/internal...t.php?t=162239
$2B or not $2B
  Mit Zitat antworten Zitat
tabl

Registriert seit: 27. Apr 2009
Ort: 31582
19 Beiträge
 
Delphi 7 Personal
 
#8

Re: labels abspeichern

  Alt 3. Aug 2009, 22:46
danke für den link
werde warscheinlich auf die ini zurück greifen, scheint mir am einfachsten.

ps: das blöde an der suchfunktion ist das einen die richtigen suchwörter fehlen^^

edit: mir ist grad ne eigene idee gekommen. könnete ich eine klasse oder record basteln die die eigensachaften hat die ich brauch und die dann auf den oben geposten weg speichern?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: labels abspeichern

  Alt 3. Aug 2009, 23:03
Zitat von tabl:
edit: mir ist grad ne eigene idee gekommen. könnete ich eine klasse oder record basteln die die eigensachaften hat die ich brauch und die dann auf den oben geposten weg speichern?
ja, solange in dem Record nichts drin ist, was über einen "Zeiger" referenziert wird.
> also String und Co. (abgesehn von statschem Char-Array und ShortStrin), dynamische Arrays, Objekte müssen extra behandelt werden.
$2B or not $2B
  Mit Zitat antworten Zitat
tabl

Registriert seit: 27. Apr 2009
Ort: 31582
19 Beiträge
 
Delphi 7 Personal
 
#10

Re: labels abspeichern

  Alt 3. Aug 2009, 23:06
edit1:
für alle die die das gleiche problem wie ich haben eine mogliche lösung(über einen hilfrecord:

Delphi-Quellcode:
...
type
  thilflabel = record // definiren des hilfrecord mit den nötigen eigenschaften
    caption : string[100]; // darf kein dynamischer string sein, da sonst ein fehler entsteht
    color : tcolor; // sollte klar sein
  end;
...

var
  hilflblarray : array[0..19] of thilflblarray; //array defeniren, damit man nicht für jedes label einen neuen machen muss
  lblarray2 : array[0..19] of tlabel; // zuweisung sollte klar sein und erspart eine menge schreib arbeit^^
...

procedure TForm2.saveClick(Sender: TObject);
var datei : file of thilflabel;
    i :integer;
begin
  if savedialog.Execute then
  begin
    assignfile(datei,savedialog.FileName);
    try
      rewrite(datei);
      for i:=0 to 19 do
      begin
        hilflblarray[i].caption := lblarray2[i].Caption; // werte in den record übergeben
        hilflblarray[i].color := lblarray2[i].Color;
        write(datei,hilflblarray[i]); // und anschliessen sepichern
      end;
    finally
      closefile(datei);
    end;
  end;
end;

procedure TForm2.LadenClick(Sender: TObject);
var datei : file of thilflabel;
    i :integer;
begin
  if opendialog.Execute then
  begin
    assignfile(datei,opendialog.FileName);
    try
      reset(datei);
      for i := 0 to 19 do
      begin
        read(datei,hilflblarray[i]); // hier das genaze umgekehrt erst in den recor lesen
        lblarray2[i].Caption := hilflblarray[i].caption; // und auf label übertragen
        lblarray2[i].Color := hilflblarray[i].color;
      end;
    finally
      closefile(datei);
    end;
  end;
end;


ps: ich glaub mann braucht kein array sondern kann den record einfach überschreiben^^

edit2: ps2 wenn morgen ans drucken geht fällt mir bestimmt auch nch en prob ein, also stellt euch schonmal drauf ein^^
  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 16:04 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