Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Lazarus (IDE) (https://www.delphipraxis.net/81-lazarus-ide/)
-   -   Hilfe - Speichern Funktioniert plötzlich nicht mehr (https://www.delphipraxis.net/176218-hilfe-speichern-funktioniert-ploetzlich-nicht-mehr.html)

Finki 20. Aug 2013 10:07

Hilfe - Speichern Funktioniert plötzlich nicht mehr
 
Liste der Anhänge anzeigen (Anzahl: 5)
Hey ich hab mal wieder ein Problem,

Das Programm will einfach nicht mehr speichern!

btnNew
Delphi-Quellcode:
procedure TForm1.btnNewClick(Sender: TObject);
begin
  if change then
  begin
  Memo1.Lines.Clear;
  end
  else
  begin
    Save(btnNew); //steht in der Library
  end;
end;
Library
Delphi-Quellcode:
procedure Save(Sender: TObject);
var
  textb : boolean;
  texts : string;
  long, long01, i : integer;
begin
        if Form1.SaveDialog.Execute then
        begin
        Form1.Memo1.Lines.SaveToFile(Form1.SaveDialog.Filename + '.txt');
        savepath := Form1.SaveDialog.FileName;
          long:= length(Form1.SaveDialog.FileName);
          textb:=false;
          i:=1;
          repeat
            begin
                texts:=copy(Form1.SaveDialog.FileName,long,i);
                long:= long-1;
                i:=i+1;
                if texts[1]='\' then
                begin
                  long01:= length(texts);
                  texts:=copy(texts,2,long01-1);

                  textb:=true;
                end;
            end;
          until textb;
          Form1.Caption:=texts;
          Form1.StatusBar.Panels.Items[0].Text:=Form1.SaveDialog.Filename+ '.txt';
          texts:='';
          change:=false;
          save01:=false;
        end;
       Form1.SaveDialog.Free;
end;
mit der verlinkung passt alles, da es schon funtioniert hat.

folgende Fehler tretten auf: siehe anhang

Finki 20. Aug 2013 10:07

AW: Hilfe - Speichern Funktioniert plötzlich nicht mehr
 
Liste der Anhänge anzeigen (Anzahl: 2)
hier sind noch die restlichen bilder

Finki 20. Aug 2013 10:13

AW: Hilfe - Speichern Funktioniert plötzlich nicht mehr
 
....und plötzlich funktioniert es wieder, hat jemand eine Ahnung warum?

DeddyH 20. Aug 2013 10:17

AW: Hilfe - Speichern Funktioniert plötzlich nicht mehr
 
Schau Dir mal den Wert von texts im ersten Schleifendurchlauf an. Wenn Du da auf das Zeichen an Index 1 zugreifst, was passiert dann wohl? Überhaupt, was versuchst Du da eigentlich zu erreichen?

Finki 20. Aug 2013 10:34

AW: Hilfe - Speichern Funktioniert plötzlich nicht mehr
 
den namen der datei rausfinden, ohne den C:\... qutasch

Finki 20. Aug 2013 10:38

AW: Hilfe - Speichern Funktioniert plötzlich nicht mehr
 
Liste der Anhänge anzeigen (Anzahl: 2)
ich glaub ich ändere das thema auf "Hilfe mein lazarus macht Fehler wo gar keine sind!!!!"

was sagt bitte der fehler aus:

DeddyH 20. Aug 2013 10:40

AW: Hilfe - Speichern Funktioniert plötzlich nicht mehr
 
Für so etwas gibt es fertige Funktionen wie ExtractFilePath/ExtractFileDir/ExtractFileName/ExtractFileExt.

p80286 20. Aug 2013 10:53

AW: Hilfe - Speichern Funktioniert plötzlich nicht mehr
 
Zitat:

Zitat von Finki (Beitrag 1225472)
ich glaub ich ändere das thema auf "Hilfe mein lazarus macht Fehler wo gar keine sind!!!!"

Umgekehrt wird ein Schuh daraus, "Lazarus zeigt Deine Fehler an"
Zitat:

Zitat von Finki (Beitrag 1225472)
was sagt bitte der fehler aus:

wahrscheinlich hat eine Liste nur drei Einträge undDer Listenindex steht auf 3 (4.Eintrag, da die Zählung bei Null startet.)

Und wenn Du schon ExtractFilePath und Konsorten nicht willst, dann versuche doch wenigstens deine Routinen etwas einfacher zu strukturieren!
Delphi-Quellcode:
if length(Irgendeinstring)>0 then
  if Irgedeinstring[length(Irgendeinstring)]='\' then
und diese Zugriffe auf Form1.EineKomponente.Text sind auch nicht das Gelbe vom Ei. So etwas übergibt man als Parameter.

Gruß
K-H

sx2008 20. Aug 2013 12:03

AW: Hilfe - Speichern Funktioniert plötzlich nicht mehr
 
Deine Save-Procedure ist ziemlicher Käse.
(ich bin da etwas direkt; bitte nicht falsch verstehen)

1. Fehler:
das ist keine Procedure die in eine Library gehört, sondern es sollte eine Methode der Klasse TForm1 sein
2. Fehler:
alles ist in einem Block - nicht gut.
Abspeichern benötigt 3 Schritte a) Dateiname im Dialog erfragen b) abspeichern c) neuen Status anzeigen
Diese 3 Schritte sollte man sauber trennen und ggf eigene Funktionen/Methoden vorsehen.
3. Fehler:
Freigeben einer Komponente die automatisch von der VCL erzeugt wurde.
Delphi-Quellcode:
Form1.SaveDialog.Free;
<- das ist natürlich tötlich, weil die SaveDialog-Komponente beim 2. Mal zerstört ist und der Zeiger in SaveDialog auf ungültiger Speicher zeigt.

Finki 20. Aug 2013 12:10

AW: Hilfe - Speichern Funktioniert plötzlich nicht mehr
 
Vielen dank für die Wirklich ausführlichen Antworten! ich habs jetzt! :D

um nochmal auf das
Code:
ExtractFilePath/ExtractFileDir/ExtractFileName/ExtractFileExt
zurück zukommen.

was macht welcher befehl genau??

DeddyH 20. Aug 2013 12:18

AW: Hilfe - Speichern Funktioniert plötzlich nicht mehr
 
Geh doch mal auf unsere DP-Referenz. Da kannst Du dann jeden Befehl suchen, z.B. ExtractFilePath.

Perlsau 20. Aug 2013 14:41

AW: Hilfe - Speichern Funktioniert plötzlich nicht mehr
 
Mir fällt dazu nur eines ein: Grundlagen, Grundlagen und nochmal Grundlagen ...:?

JamesTKirk 22. Aug 2013 08:27

AW: Hilfe - Speichern Funktioniert plötzlich nicht mehr
 
Zitat:

Zitat von Finki (Beitrag 1225492)
um nochmal auf das
Code:
ExtractFilePath/ExtractFileDir/ExtractFileName/ExtractFileExt
zurück zukommen.

was macht welcher befehl genau??

Dafür gibt es etwas, dass sich Dokumentation nennt:
Du könntest auch in Lazarus die Hilfe öffnen und dort nach den Funktionen suchen.

Gruß,
Sven


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