Autor Beitrag
Jebaz
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 44

Win NT 4, Win XP, Linux
Delphi 7.0
BeitragVerfasst: Mo 06.01.03 16:36 
Biiiiitteee, helft mir....ich bin am verzweifeln...

Ich schreibe seit Monaten hier im Geschäft an meinem Chat (mein Lehrmeister findets cool :wink: )und nun, hab ich ne funktion eingebaut, mit der man den geschriebenen, gechatteten Text als .rtf abspeichern kann. Nun, ich musste eine wirklich hässliche Lösung dazu verwenden, da bei der naheliegensten Lösung (-> gebrauch des Save-Dialogs) danach einfach das INI-File irgendwie gesperrt ist.

Also, einmal irgendwo im Programm den Save-Dialog geöffnet und die Datei gespeichert, folgt danach bei jedem weiteren zugriffsversuch auf die INI diese Fehlermeldung:

"Project JebiChat_Client.exe raised exception class EIniFileException with Message "Unable to write to ...\shibby\Config.ini". Process Stopped..."

Naja, ich hab wirklich nur nach gebrauch dieser verdammten Dialoge dieses Problem...die Pfadangaben stimmen, ich spiele ja inzwischen mit diesen INI-Files herum, mach ja nichts soooooo wahnsinnig falsch :oops: :twisted:

währe echt cool, wenn ihr mir helfen könnt, denn die Suchfunktion nach dem Begriff "INI" brachte zum vorschein, dass diese Problem glaub ich noch nie da behandelt wurde, oder seh ich das falsch?? ich denke, währen sicherlich noch andere Leute froh um eine Antwort...

_________________
...and You will Know us By the Trail of Death.....
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mo 06.01.03 17:00 
Hallo,

poste am bestem mal die Funktion, in der du den Save Dialog verwendest. Denn eigentlich kann es nicht sein. Wahrscheinlich mengst du versehentlich an der INI-Dateirum.

Gruß
Klabautermann
Jebaz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 44

Win NT 4, Win XP, Linux
Delphi 7.0
BeitragVerfasst: Mo 06.01.03 17:07 
Titel: ne menge code
nun ja, ist ein bissle schwierig, aus der eigentlichen Funktion, in der der Save-Dialog zum zuge kommt, siehst du eigentlich nichst, ich poste ihn trotzdem mal:

ausblenden Quelltext
1:
2:
3:
4:
if SaveDial.Execute then
   begin
      Messages.Lines.SaveToFile(SaveDial.FileName);
end;


nun, wenn ich danach das Programm schliesse, wird folgendes gemacht:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   iConfig := TIniFile.Create('..\'+ChatFolderName+'\Config.ini');
   SaveConfig(TRUE);
   iConfig.Free;
   StopMIDI;
end;


StopMIDI könnt ihr mal vergessen, das hat sicher nix damit zu tun...tja, und die SaveConfig-function hab ich selbst geschrieben, die sieht volgendermassen aus:

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
rocedure TForm1.SaveConfig(MitStartWave: Boolean);
var
   sCache   : String;
   tmpColor : TColor;
   sColor   : String;
   iCache   : Integer;
begin
   sCache := cbFontName.Text;
   iConfig.WriteString('Font','Font Name',sCache);

   sCache := cbFontSize.Text;
   iConfig.WriteString('Font','Font Size',sCache);

   tmpColor := cbFontColor.Selected;
   sColor := ColorToString(tmpColor);

   iConfig.WriteString('Font','Font Color',sColor);

   if ToolButton1.Down then
      iConfig.WriteBool('Font','Font Bold',TRUE)
   else
      iConfig.WriteBool('Font','Font Bold',FALSE);

   if ToolButton3.Down then
      iConfig.WriteBool('Font','Font Italic',TRUE)
   else
      iConfig.WriteBool('Font','Font Italic',FALSE);

   if ToolButton4.Down then
      iConfig.WriteBool('Font','Font Underline',TRUE)
   else
      iConfig.WriteBool('Font','Font Underline',FALSE);

   if Messages.Color = $00FFE2C6 then
   begin
      iConfig.WriteString('Font','Hintergrundfarbe','$00FFE2C6');
   end else
   begin
      tmpColor := cbHintergrund.Selected;
      sColor := ColorToString(tmpColor);
      iConfig.WriteString('Font','Hintergrundfarbe',sColor);
   end;

   iCache := Form1.ClientWidth;
   iConfig.WriteInteger('Window','Width',iCache);

   iCache := Form1.ClientHeight;
   iConfig.WriteInteger('Window','Height',iCache);

   iCache := Form1.Left;
   iConfig.WriteInteger('Window','Left',iCache);

   iCache := Form1.Top;
   iConfig.WriteInteger('Window','Top',iCache);

   if Form1.WindowState = wsNormal then
   begin
      iConfig.WriteString('Window','State','wsNormal');
   end else
   begin
      if Form1.WindowState = wsMaximized then
      begin
         iConfig.WriteString('Window','State','wsMaximized');
      end else
      begin
         iConfig.WriteString('Window','State','wsMinimized');
      end;
   end;

   sCache := 'C:\WINNT\Media\tada.wav';
   iConfig.WriteString('Sound','Start Wave',sCache);

   if MitStartWave then
   begin
      if SoundForm.cbSound2.Checked then
      begin
         iConfig.WriteBool('Sound','Play Start Wave',TRUE);
      end else
      begin
         iConfig.WriteBool('Sound','Play Start Wave',FALSE);
      end;
      iConfig.WriteString('Sound','Start Wave',SoundForm.Edit2.Text);
   end;
end;


naja, sorry, ist ein bisschen viel, mein Chat wächst und wächst...naja, hoffentlich hab ich da mächtig was falsch gemacht, ich kann mir jedenfalls nicht mehr helfen...danke für eure Mühe

_________________
...and You will Know us By the Trail of Death.....
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Mo 06.01.03 17:43 
machs halt ohne den save dialog...
wenn es wirklich an dem liegt...
das ist schneller geschafft als so eine fehlersuche...

vielleicht ist die ini-datei ja schreibgeschützt?? (Wodurch das bei einem save dialoggebrauch passieren sollte ist mir allerdings nicht klar :? )

Fiji-Fighter
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mo 06.01.03 17:54 
Titel: Re: ne menge code
Hallo,

ich würde sagen dein Problem liegt hier:

Jebaz hat folgendes geschrieben:
ausblenden Quelltext
1:
   iConfig := TIniFile.Create('..\'+ChatFolderName+'\Config.ini');					


Du solltest nicht mit relativen Pfadangaben wie '..' Arbeiten, da du immer die Frage hast, von wo aus gesehen dies geschieht. Ich vermute, das dir der Save Dialog as Ausgangsverzeichnis verstellt. Angenommen du speicherst deinen RTF-Text als 'C:\Test.rtf' und der Save Dialog verschiebt dein Anfangsverzeichnis auf 'C:\'. Wo liegt dann 'C:\..\' + ChatFolderName + 'Config.ini'?
Verwende besser ExtractFileName(ParamStr(0)) oder ähnliches.

Probiere es mal aus. Wenn der Fehler weiterhin besteht, melde dich noch mal. Dann suche ich weiter ;).

Gruß
Klabautermann
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mo 06.01.03 17:57 
Hallo,
Fiji-Fighter hat folgendes geschrieben:
das ist schneller geschafft als so eine fehlersuche...

mit der Einstellung wirst du dir nach und nach sämliche Programmiermöglichkeiten streichen und kannst irgendwann garnichts mehr machen. Man sollte immer versuchen rauszufinden warum ein Fehler auftrit. Danach kann man immernoch entscheiden wie aufwändig es ist ihn zu beheben.

Gruß
Klabautermann
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 06.01.03 18:49 
Fiji-Fighter hat folgendes geschrieben:
machs halt ohne den save dialog...
wenn es wirklich an dem liegt...
das ist schneller geschafft als so eine fehlersuche...

vielleicht ist die ini-datei ja schreibgeschützt?? (Wodurch das bei einem save dialoggebrauch passieren sollte ist mir allerdings nicht klar :? )

Spitze und dann beschweren sich alle, das Microsoft so viele Bugs in Windows hat.
Jebaz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 44

Win NT 4, Win XP, Linux
Delphi 7.0
BeitragVerfasst: Do 09.01.03 08:19 
Titel: Gelöst!
Danke vielmals an euch, besonders an Klabautermann :lol: es lag an meinen Relativen-Pfad-Angaben. Ich verwende nun den Absoluten Pfad wenn ich das INI-File kreire und siehe da, nun funktioniert alles :wink:

_________________
...and You will Know us By the Trail of Death.....
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Do 09.01.03 10:51 
Hallo,

schön das es jetzt klapt.

Ich hoffe du erstellst den Absoluten Pfad Dynamisch (also wie ich erwähnt habe üder paramStr(0) bzw. Application.Exename) denn sonst wirst du Probleme bekommen wenn du das Programm weitergiebst.

Gruß
Klabautermann
Jebaz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 44

Win NT 4, Win XP, Linux
Delphi 7.0
BeitragVerfasst: Mo 13.01.03 08:02 
Titel: Perfekt ;-)
Zitat:
Ich hoffe du erstellst den Absoluten Pfad Dynamisch ...
jep, genau das mach ich...hab ich vorhin schon getan und wollte noch sicherer werden mit dem relativen-pfad, was aber nichts brachte...nochmals danke :dance:

MfG

_________________
...and You will Know us By the Trail of Death.....