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
Seite 1 von 2  1 2      
Erutan

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

Pressemitteilungs-Tool

  Alt 16. Mär 2013, 01:21
Hallo,

beruflich habe ich viel mit dem Schreiben von Online-Pressemitteilungen zu tun. Das Problem dabei: Es ist unheimlich zeuitaufwändig, die einzlenen Prosseportale einzeln aufzurufen, die etlichen Felder auszufüllen und abzuschicken.

Nun möchte ich mir ein kleines Programm basteln, das mir einen teil dieser Aufgabe abnimmt. Im Jahr 2002 hatte ich schon einmal ein ähnliches Tool mit Delphi6 geschrieben, mit dem man sogenannte Picture Posts bestücken konnte. Da funktionierte auch super. Damals hatte ich fie Feldnamen allerdings alle händisch ausgelesen und in das Programm eingetragen. Das war möglich weil es nur rund 30 interessante Picture Posts gab.

Leider liegt die Sache nun aber ein wenig anders und alles ist viel komplizierter.

Erstens erwarten die meisten Presseportale einen Login und loggen einen wieder aus wenn man die Seite verläßt. Eine Cookie-Funktion um angemeldet zu bleiben, ist oft nicht vorhanden.

Zweitens gibt es oft eine ganze Reihe von Select-Feldern, die jedes mal ein wenig anders aussehen bzw. andere Inhalte aufweisen.

Drittens wäre es eine Aufgabe für jemanden, der Vater und Mutter erschlagen hat wenn man all die Feldnamen händisch aus dem Sourcecode auslesen müßte um sie ansprechen zu können.

Daß es aber dennoch irgendwie gehen muß zeigen zwei Online-Anbieter von denen einer PR-Gateway (http://www.pr-gateway.de/) ist. Irgendwie werden dort - zumindest die allermeisten) Presseportale - nach einmaligem Eintrag der relevanten Daten automatisch bestückt. Ich nehme an, dort kommt Javascript zum Einsatz aber damit kenne ich mich nicht aus. Und das Ganze geht teilweise sogar ohne vorherige Anmeldung bei jedem einzelnen Presseportal

Ich würde so ein Tool gerne mit Delphi schreiben, weiß aber nicht, wie.
Also ich weiß schon, wie man einen Formularaufüller mit Delphi schreibt aber nicht wie es unter Berücksichtigung der o.g. Probleme funktionieren soll.

Kann mir jemand helfen?

Viele Grüße
Erutan
Holger
  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 16. Mär 2013, 02:19
Ich denke nicht, dass PR-Gateway die Inhalte an die Portale verteilt, indem die einzelnen Seiten aufgerufen werden und die jeweilige Web-Formulare ausfüllt.

Dafür gibt es APIs mit denen solche Daten übermittelt werden.

Diesen Weg kannst du auch gehen, musst dir aber für jedes einzelne Portal einen API Zugang holen (evtl. kostenpflichtig). Diese APIs müssen nicht gleich sein, sondern können bei jedem Portal anders realisiert sein.

Alternativ kannst du wie angedacht die Web-Formulare automatisch ausfüllen lassen.
Der Aufwand sollte überschaubar sein (wenn man es richtig angeht)

Eine Seite kann man auf Formulare und deren Felder untersuchen und dann die Feldnamen und den Feldtypen herausfinden. Du wählst jetzt aus, in welche Felder, welcher Inhalt rein soll und merkst dir diese Informationen. Beim nächsten Besuch, kann das Programm das dann automatisch
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 18. Mär 2013, 22:36
Hi Sir Rufo,

vielen herzlichen Dank für die superschnelle Antwort.

Bei mir hat es etwas länger gedauert weil ich einfach davon ausgegangen war, daß Delphi 6 auch unter win7 problemlos laufen würde. Ging aber erst mal nicht.

Dann habe mein altes Programm wieder ausgekramt, das ich vor Jahren geschrieben hatte weil ich mittlerweile vergessen hatte wie ich das damals gemacht habe.
Nun das zweite Problem: Kann man unter Win7 etwa nichts mehr in ini-Dateien speichern? Au weia. Ich hatte so ziemlich alle Programmeinstellungen in ini-Dateien gespeichert weil ich mich an die Registry nie rangetraut habe.

Und nu? Jetzt weiß ich erst mal nicht mehr weiter. Muß mich da erst wieder reinfinden. Wäre echt für jede Hilfe dankbar.

Was die API angeht: Ich wüßte ja nicht mal wie ich so eine API-Schnittstelle bei Drupal freigeben könnte wenn ich Drupoal auf meinem Server installiert habe, geschweige denn wie man sie anspricht.
Ich hatte mir damals Delphi nach ganz praktischen Überlegungen so weit beigebracht wie ich es gerade eben brauchte und mehr als die Hälfte davon wieder vergessen.

Ich habe allerdings mittlerweile herausgefunden, daß ich alle Informationen, die ich damals in die Formularfelder eintragen lassen habe, vorher in einer ini gespeichert habe. Das war die Userdat.ini. Darin wurden beim Beenden des Programms auch alle Programmeinstellungen hinterlegt.

Wenn ich das jetzt aber machen will bleibt die ini einfach leer. Eine normale Textdatei läßt sich aber noch beschreiben.

Oh je, da habe ich mir was vorgenommen. Aber ich will das unbedingt machen weil so ein Anmeldetool - wenn es erst mal fertig ist - stundenlange langweilige Tipparbeit einspart.
Holger
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Pressemitteilungs-Tool

  Alt 18. Mär 2013, 23:43
Bei mir hat es etwas länger gedauert weil ich einfach davon ausgegangen war, daß Delphi 6 auch unter win7 problemlos laufen würde. Ging aber erst mal nicht.
Dann musst du ein anderes D6 haben. Unseres läuft

Nun das zweite Problem: Kann man unter Win7 etwa nichts mehr in ini-Dateien speichern? Au weia. Ich hatte so ziemlich alle Programmeinstellungen in ini-Dateien gespeichert weil ich mich an die Registry nie rangetraut habe.
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%.
Windows Vista - Eine neue Erfahrung in Fehlern.
  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, 00: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 (19. Mär 2013 um 00: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
 
#6

AW: Pressemitteilungs-Tool

  Alt 19. Mär 2013, 00: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
 
#7

AW: Pressemitteilungs-Tool

  Alt 19. Mär 2013, 22: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: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#8

AW: Pressemitteilungs-Tool

  Alt 19. Mär 2013, 23: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
 
#9

AW: Pressemitteilungs-Tool

  Alt 20. Mär 2013, 00: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 03: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
 
#10

AW: Pressemitteilungs-Tool

  Alt 20. Mär 2013, 00: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 01:11 Uhr)
  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 23:45 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