AGB  ·  Datenschutz  ·  Impressum  







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

Pressemitteilungs-Tool

Ein Thema von Erutan · begonnen am 16. Mär 2013 · letzter Beitrag vom 20. Mär 2013
Antwort Antwort
Erutan

Registriert seit: 16. Mär 2013
71 Beiträge
 
Delphi 7 Professional
 
#1

AW: Pressemitteilungs-Tool

  Alt 18. Mär 2013, 23:18
Zitat:
Dann musst du ein anderes D6 haben. Unseres läuft
Mit der Kompatiblitätseinstellung XP SP2 geht's bei mir auch so einigermaßen. Allerdings muß ich mein altes Programm immer mit dem Open-Dialog öffnen. Wenn ich es vom Dateimanager aus einfach doppelt anklicke kriege ich ständig Fehlermeldungen.

Zitat:
Freilich kann man das. Jedoch nicht wenn du es neben deinem Programm unter C:\Programme liegen hast. Konnte man sich auch früher nicht darauf verlassen das man dort speichern kann.
Also am besten dort speichern wo es schon seit jahren vorgesehen war wie unter C:\ProgramData oder in deinem Profil unter %Appdata%.
Ich hab's bisher noch nicht hinbekommen. Ich hatte mein altes Progrämmchen gar nicht installiert, sondern die exe einfach mit allen benötigten Dateien und einer fest eingetragenen Dateistruktur auf der Festplatte abgelegt. Ich hatte ja nie geplant, es zu verkaufen. Es mußte nur bei mir funktionieren und das gilt jetzt auch für das Submittertoll für die Pressemitteilungen.

Bei den ersten Startversuchen des alten Programms hagelte es natürlich Fehlermeldungen weil die absolut eingetragenen Pfade zu den Dateien nicht auf meiner jetzigen festplatte vorhanden sind. Ich habe daher im Sourcecode einfach alle Pfade herausgelöscht und die Dateien ins gleiche Verzeichnis gelegt wie die ausführbare Datei. Das Verzeichnis liegt auf einer reinen Datenpartition, also nicht unter C:

Irgendwo werden dennoch Daten gespeichert denn wenn ich die Editfelder ausfülle, das Programm beende und dann wieder starte, werden einige Felder wieder mit den alten Daten gefüllt. Ich habe bloß keinen Schimmer, wo die gespeichert werden. Bin alle Dateien durchgegangen und finde sie alle leer vor.

Ich werde aber jetzt alles noch mal durchforsten.

Daß sich inis doch noch speichern lassen, beruhigt ein bißchen. Allerdings werde ich (weil längere Texte dabei) in einigen Fällen trotzdem darauf zurückgreifen müssen, die Inhalte zweilenweise in eine Datei zu speichern und so wieder auszulesen. Eine andere Möglichkeit kenne ich leider nicht.

Grüße
Holger

P.S.: Falls es übrigens jemanden interessiert kann ich die ganze Sache gerne mal hier zum Download einstellen.
Holger

Geändert von Erutan (18. Mär 2013 um 23:26 Uhr) Grund: Download
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Pressemitteilungs-Tool

  Alt 18. Mär 2013, 23:59
Im Explorer als Adresse eintragen und von da weitersuchen
Code:
%AppData%\Local\VirtualStore
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Erutan

Registriert seit: 16. Mär 2013
71 Beiträge
 
Delphi 7 Professional
 
#3

AW: Pressemitteilungs-Tool

  Alt 19. Mär 2013, 21:53
Danke.

Ja, da wurde tatsächlich eine zentrale ini-Datei angelegt. Ich hatte vergessen, daß man den Speicherplatrz immer mit absoluten Pfaden angeben muß wenn man bestimmen will wo die ini gespeichert wird. Hab' ich jetzt nachgeholt und es klappt

Jetzt habe ich aber wieder ein neues Problem. Jaja, mühsam ernährt sich das Eichhörnchen. So langsam komme ich wieder hinter die Geheimnisse des alten programms. Manches aber ist neu und da komme ich nicht weiter.

Z.B. habe ich einige Daten in eine textdatei abgespeichert,die per SaveDialog aufgerufen wurde. Das klappt jetzt auch immer noch...allerdings nur, wenn es sich um einzeilige Texte handelt.

Seit heute versuche ich jedoch, ein Adressfeld abzuspeichern und das besteht ja nun mal aus mindestens drei Zeilen. Das klappt nun nwieder nicht. Beim Einlesen der zuvor gespeicherten Datei wird nur die erste der drei Zeilen eingelesen.

Das ist auch eigentlich klar, denn ich schreibe mit writeLn und lese mit readLn

Also
WriteLn(Datei,MemoAdresse.Text);

und zurücklesen mit
ReadLn(Datei,String1);
MemoAdresse.Text:=String1;

wobei String1 eine zuvor deklarierte Variable ist deren Funktion mir nicht mehr ganz klar ist.

So, ich versuch's jetzt weiter.

Viele Grüße
Holger
Holger
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#4

AW: Pressemitteilungs-Tool

  Alt 19. Mär 2013, 22:11
Hallo,

mach doch aus
WriteLn(Datei,MemoAdresse.Text); MemoAdresse.SaveToFile (Filename);
und
ReadLn(Datei,String1); MemoAdress.LoadFromFile (Filename);

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Erutan

Registriert seit: 16. Mär 2013
71 Beiträge
 
Delphi 7 Professional
 
#5

AW: Pressemitteilungs-Tool

  Alt 19. Mär 2013, 23:22
Hi Volker,

das geht in dem Fall leider nicht...denke ich jedenfalls. Denn aus der einen Textdatei werden mehrere EditFelder und Memofelder "bestückt".

Was ich pepostet hatte war nur ein Ausschnitt. Das Ganze sieht so aus:

Delphi-Quellcode:
procedure TForm1.Speichern1Click(Sender: TObject);
var
 Datei: TextFile;
begin
  if SaveDialog1.Execute
  then
  AssignFile(Datei, SaveDialog1.FileName);
  Rewrite(Datei);
  WriteLn(Datei, EditName.Text);
  WriteLn(Datei,EditEmail.Text);
  WriteLn(Datei,EditPassword.Text);
  WriteLn(Datei,EditTelefon.Text);
  WriteLn(Datei,EditUeberschrift.Text);
  WriteLn(Datei,EditBeschreibung.Text);
  WriteLn(Datei,EditAnmerkungen.Text);
  WriteLn(Datei,MemoAdresse.Text);
  CloseFile(Datei);
end;
Ich habe mir jetzt vorübergehend damit beholfen, für jedes Momofeld einen eigenen Speicherknopf anzulegen. Aber das ist nicht gerade elegant und nimmt viel Platz weg.
Holger

Geändert von Erutan (20. Mär 2013 um 02:40 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Pressemitteilungs-Tool

  Alt 19. Mär 2013, 23:54
Wenn Delphi-Code gepostet wird, wäre es schön, wenn der in Delphi-Tags gesetzt wird, dann bekommt man auch kein Augenkrebs

so schreiben
Code:
[DELPHI]
procedure foo;
begin
  // ein Kommentar
end;
[/DELPHI]
und so aussehen
Delphi-Quellcode:
procedure foo;
begin
  // ein Kommentar
end;
Um einen String zuverlässig in eine Zeile zu schreiben, sollte man spezielle Zeichen, wie die Zeilenumbrüche, einfach escapen

Delphi-Quellcode:
uses
  SysUtils;

const
  C_ESCAPE_CHAR = '\';
  C_SUBST_CHARS : array[0..7] of char = ( #0, #7, #8, #9, #10, #11, #12, #13 );
  C_ESCAPE_CHARS : array[0..7] of char = ( '0', 'a', 'b', 't', 'n', 'v', 'f', 'r' );

function EscapeStr( const AStr : string ) : string;
var
  LIdx : Integer;
begin
  Result := AStr;

  Result := StringReplace( Result, C_ESCAPE_CHAR, C_ESCAPE_CHAR + C_ESCAPE_CHAR, [rfReplaceAll] );

  for LIdx := 0 to 7 do
    Result := StringReplace( Result, C_SUBST_CHARS[LIdx], C_ESCAPE_CHAR + C_ESCAPE_CHARS[LIdx], [rfReplaceAll] );
end;

function UnescapeStr( const AStr : string ) : string;
var
  LIdx : Integer;
begin
  Result := AStr;

  for LIdx := 0 to 7 do
    Result := StringReplace( Result, C_ESCAPE_CHAR + C_ESCAPE_CHARS[LIdx], C_SUBST_CHARS[LIdx], [rfReplaceAll] );

  Result := StringReplace( Result, C_ESCAPE_CHAR + C_ESCAPE_CHAR, C_ESCAPE_CHAR, [rfReplaceAll] );
end;
Jeden String, den du in die Datei schreibst schickst du jetzt einmal durch den Escaper
Delphi-Quellcode:
procedure TForm1.Speichern1Click( Sender: TObject );
var
  Datei: TextFile;
begin
  if SaveDialog1.Execute
  then
    begin
      AssignFile( Datei, SaveDialog1.FileName );
      Rewrite( Datei );
      WriteLn( Datei, EscapeStr( EditName.Text ) );
      WriteLn( Datei, EscapeStr( EditEmail.Text ) );
      WriteLn( Datei, EscapeStr( EditPassword.Text ) );
      WriteLn( Datei, EscapeStr( EditTelefon.Text ) );
      WriteLn( Datei, EscapeStr( EditUeberschrift.Text ) );
      WriteLn( Datei, EscapeStr( EditBeschreibung.Text ) );
      WriteLn( Datei, EscapeStr( EditAnmerkungen.Text ) );
      WriteLn( Datei, EscapeStr( MemoAdresse.Text ) );
      CloseFile( Datei );
    end;
  end;
Beim Zurücklesen natürlich einmal wieder durch den Unescaper
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (20. Mär 2013 um 00:11 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:11 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