![]() |
Datenbank: Frage • Version: X • Zugriff über: X
Firemonkey abspeichern (iOS)
Hallo,
ich habe im Forum zum Speichern mit iOS zwar was gefunden, aber ganz schlau werde ich daraus nicht. Ich möchte, wenn jemand in Edit Felder etwas eingibt, bzw. die Sprache ändert, die Einstellung gespeichert wird so dass wenn man die App schließt und wieder öffnet alles so ist wie vorher. Ist sowas möglich, oder darf man die App gar nicht erst schließen (NICHT minimieren). Könnte mir jemand eine Erklärung für Anfänger geben und evtl. ein Beispiel? MfG André |
AW: Firemonkey abspeichern (iOS)
Memo1.Lines.SaveToFile(TPath.GetDocumentsPath+TPat h.DirectorySeparatorChar+'huh.txt');
|
AW: Firemonkey abspeichern (iOS)
Alles klar, das funktioniert.
Aber das ist ja jetzt mit einem Memo Feld verknüpft. Muss ich dann vorher die Edit-Felder in ein Memo eintragen lassen und das Memo dann abspeichern lassen? Und wie finde ich jetzt heraus, ob der die Datei wirklich abgespeichert hat. Würde die gerne mal laden. Wenn mir jemand ein Beispiel (Code) schreiben könnte, wie man auf Knopfdruck ein Editfeld / Memo speichert und es dann lädt, wäre ich ihm SEHR verbunden! Durch fertigen Code lerne ich oft irgendwie besser. Bitte unter Firemonkey iOS. Mit freundlichen Grüßen Andre |
AW: Firemonkey abspeichern (iOS)
Grundsätzlich geht das Speichern wie unter Windows. Per FileStream, File usw.
|
AW: Firemonkey abspeichern (iOS)
Zitat:
Über ein paar Ansätze würde ich mich freuen, denn alles was ich im Internet gefunden habe weist immer ein paar Fehler auf... |
AW: Firemonkey abspeichern (iOS)
Unter iOS kannst Du alles was Du willst unter
![]() Wenn Du nur paar Edits speichern willst und auf eine Datenbank verzichten kannst, dann speicher und lade alles z.B. über eine Stringlist. Speichern:
Delphi-Quellcode:
Laden:
var
sl: TStringlist; begin sl := TStringList.Create; sl.add(edit1.text); sl.add(edit2.text); sl.add(edit3.text); sl.add(edit4.text); sl.SaveToFile(TPath.GetDocumentsPath+TPath.DirectorySeparatorChar+'einstellungen.txt'); end;
Delphi-Quellcode:
var
sl: TStringlist; begin sl := TStringList.Create; sl.LoadFromFile(TPath.GetDocumentsPath+TPath.DirectorySeparatorChar+'einstellungen.txt'); edit1.text := sl[0]; edit2.text := sl[1]; edit3.text := sl[2]; edit4.text := sl[3]; end; |
AW: Firemonkey abspeichern (iOS)
DANKE!!! Das hat mir schon mal sehr geholfen und ist anfängerfreundlich. :thumb:
Ich habe mir mal ein Tutorial angeschaut zu Datenbanken. Allerdings wird bei mir im Daten-Explorer unter "dbExpress" angezeigt: "dbExpress-Konfigurationsdateien nicht gefunden". Dementsprechend habe ich nur FireDAC. Das Tutorial handelt aber über dbExpress. Kann mir da jemand helfen und sagen, warum ich das nicht benutzen kann? Habe die Delphi RAD XE6 Testversion. Ich muss doch mit dbExpress SQlite arbeiten, um Editfelder in eine Datenbank zu tun? |
AW: Firemonkey abspeichern (iOS)
Für die mobile Entwicklung bietet sich die Verwendung von SQLite über FireDAC an.
![]() Hierfür sind bei Delphi auch Beispiele dabei |
AW: Firemonkey abspeichern (iOS)
Ok, also doch FireDAC.
Könnt ihr mir auch vllt. schnell verraten, wie ich diese "einstellungen.txt" Datei nun übertragen kriege? Von mir aus zu Testzwecken auf einen FTP Server. So dass ich von außerhalb diese Datei verschicken kann. Damit wäre mir so ziemlich geholfen. |
AW: Firemonkey abspeichern (iOS)
Schau Dir doch einfach die Samples an
|
AW: Firemonkey abspeichern (iOS)
Zitat:
Eine Datenbank und diese Textdatei verschicken sind doch 2 paar Schuhe? |
AW: Firemonkey abspeichern (iOS)
Hi,
nimm es mir bitte nicht übel, aber ich glaube nicht dass jemand dir hier eine Komplettlösung für einen Client-Server Datenaustausch tippt. Poste Deinen Code mit einem konkreten Problem. Dann wirst Du sicher auch Hilfe bekommen. Liebe Grüße P.S.: Ob du eine Textdatei, eine Datenbank, Filme oder was auch immer übertragen willst ist egal. Wenn Du die Werte aus der iPad-Version auf einen (Datenbank-)Server übertragen willst geht das auch mit FireDac. Du kannst auch nur in eine Remote-Datenbank speichern, setzt jedoch voraus, dass die Ipads immer eine Internetverbindung haben. |
AW: Firemonkey abspeichern (iOS)
Okay! Danke für deine Antwort. So viel verlange ich auch gar nicht. Ich dachte, die Textdatei zu verschicken wären auch nur ein paar Zeilen Code.
Also ich versuche jetzt mal mit FireDAC (SQlite) eine Datenbank zu erstellen und dann darüber zu verschicken? Mir wurde in einem anderen Thread gesagt HTTPS wäre gut zum verschicken einer Datei. Aber ich habe erst mal den Auftrag diese Textdatei nun auf unseren FTP-Server zu übertragen. Ich habe ja bereits einen FTP-Client programmiert - jedoch nur für Windows. Da man bei iOS ja keine Datei auswählen kann, war jetzt die Frage wie ich eine Datei verschicke ohne sie auswählen zu müssen. Auf jeden Fall mache ich mich jetzt mal über SQlite (FireDAC) schlau. Was ist eigentlich der unterschied zwischen FireDAC und dbExpress und warum ist das bei mir deaktiviert? Ich habe so viele Fragen und weiß, dass ich nerve. Aber würde so gerne mehr verstehen. Und die Textdatei zu verschicken sagtest du geht auch mit SQlite? Dann würde HTTPS ja wegfallen?! :pale: |
AW: Firemonkey abspeichern (iOS)
Ich habe ein Problem. Wenn ich die gespeicherte .txt Datei bei "FormCreate" laden will (im Sinne von Profileinstellung), dann stürzt die App sofort ab. Was mache ich falsch? Per Button kann ich die laden...
|
AW: Firemonkey abspeichern (iOS)
Ganz einfach, in Zeile 42 fehlt ein
Delphi-Quellcode:
.
end
Spaß beiseite: Wie denkst du sollen wir da etwas zu sagen können, wenn wir nicht wissen, was genau du da machst? Oder hast du dir gedacht, wir können über das Forum auf deinen Bildschirm schauen? Zeig doch den Quellcode und wo genau das Problem ist. Hast du auch schon mit dem Debugger geschaut, wo genau das Programm sich verabschiedet? |
AW: Firemonkey abspeichern (iOS)
Die Fehlermeldung steht vielleicht unter einer NDA, welche wir nicht gezeichnet haben. :mrgreen:
|
AW: Firemonkey abspeichern (iOS)
Wahrscheinlich existiert die Datei nicht ;-)
|
AW: Firemonkey abspeichern (iOS)
Zitat:
|
AW: Firemonkey abspeichern (iOS)
[Glaskugelmodus on]
Projekt wird neu erzeugt und aufs Gerät geschoben. Alle zur Laufzeit angelegten Dateien sind wieder futsch und die zu ladende Datei wird nicht über die Bereitstellung mitgeliefert. [Glaskugelmodus off] Aber lassen wir uns überraschen :) |
AW: Firemonkey abspeichern (iOS)
es gibt eine tolle Funktion: FileExits, da kann man das prüfen.
Mal ein Tipp: wo ich mit iOS angefangen haben (auch bei MAC OS), habe ich erstmal eine kleine Testform gemacht, wo ich mit die Verzeichnisse und deren Inhalt angezeigt habe, um zu raffen wie das da geht. Allerdings war das zu Betazeiten von XE4(3.5), da gab es zu Delphi noch fast keine Doku und Beispiele (iOS). Benutze die Suchfunktion hier im Forum oder aber auch mal Google, da wirst Du mittlerweile vieles finden! |
AW: Firemonkey abspeichern (iOS)
Zitat:
Zitat:
:mrgreen: Wenn doch die Datei fehlt, brauche ich deine PayPal-Daten :) |
AW: Firemonkey abspeichern (iOS)
Warum soll ich einen Quellcode posten, wenn der hier bereits gepostet wurde und ich diesen verwendet habe? :D
Zitat:
Aber hier mal mein Code zu Laden/Speichern. Speichern:
Delphi-Quellcode:
Laden:
procedure THeaderFooterwithNavigation.B_speichernClick(Sender: TObject);
var Daten: TStringList; begin if MessageDlg('Möchten Sie die Datei wirklich speichern? Die zuletzt gespeicherte Datei wird dabei überschrieben.', TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], 0, TMsgDlgBtn.mbYes) = mrYes then begin Daten := TStringList.Create; //Kopf Daten.Add(E_auftragnr.text); Daten.Add(E_montagefirma.text); Daten.Add(E_maschinentyp.text); Daten.Add(E_artderarbeit.text); Daten.Add(E_servicetechniker.text); Daten.Add(IntToStr(E_land.itemindex)); Daten.Add(E_komnr.text); Daten.Add(DateToStr(D_montagezeitvon.date)); Daten.Add(DateToStr(D_montagezeitbis.date)); //Mitte Daten.Add(DateToStr(D_datummo.date)); Daten.Add(DateToStr(D_datumdi.date)); Daten.Add(DateToStr(D_datummi.date)); Daten.Add(DateToStr(D_datumdo.date)); Daten.Add(DateToStr(D_datumfr.date)); Daten.Add(DateToStr(D_datumsa.date)); Daten.Add(DateToStr(D_datumso.date)); //Anreise Daten.Add(E_reisebeginnmo.text); Daten.Add(E_reisebeginndi.text); Daten.Add(E_reisebeginnmi.text); Daten.Add(E_reisebeginndo.text); Daten.Add(E_reisebeginnfr.text); Daten.Add(E_reisebeginnsa.text); Daten.Add(E_reisebeginnso.text); Daten.Add(E_reiseendemo.text); Daten.Add(E_reiseendedi.text); Daten.Add(E_reiseendemi.text); Daten.Add(E_reiseendedo.text); Daten.Add(E_reiseendefr.text); Daten.Add(E_reiseendesa.text); Daten.Add(E_reiseendeso.text); Daten.Add(IntToStr(C_zeitverschiebungmo.itemindex)); Daten.Add(IntToStr(C_zeitverschiebungdi.itemindex)); Daten.Add(IntToStr(C_zeitverschiebungmi.itemindex)); Daten.Add(IntToStr(C_zeitverschiebungdo.itemindex)); Daten.Add(IntToStr(C_zeitverschiebungfr.itemindex)); Daten.Add(IntToStr(C_zeitverschiebungsa.itemindex)); Daten.Add(IntToStr(C_zeitverschiebungso.itemindex)); Daten.Add(E_rückreisereisebeginnmo.text); Daten.Add(E_rückreisereisebeginndi.text); Daten.Add(E_rückreisereisebeginnmi.text); Daten.Add(E_rückreisereisebeginndo.text); Daten.Add(E_rückreisereisebeginnfr.text); Daten.Add(E_rückreisereisebeginnsa.text); Daten.Add(E_rückreisereisebeginnso.text); Daten.Add(E_arbeitsbeginnmo.text); Daten.Add(E_arbeitsbeginndi.text); Daten.Add(E_arbeitsbeginnmi.text); Daten.Add(E_arbeitsbeginndo.text); Daten.Add(E_arbeitsbeginnfr.text); Daten.Add(E_arbeitsbeginnsa.text); Daten.Add(E_arbeitsbeginnso.text); //Memo Felder {Daten.Add(Memo_Arbeiten.Text); Daten.Add(Memo_Ersatzteile.Text); } //Variablen speichern //Anreise Daten.Add(FloatToStr(GesamtStundenMo)); Daten.Add(FloatToStr(GesamtStundenDi)); Daten.Add(FloatToStr(GesamtStundenMi)); Daten.Add(FloatToStr(GesamtStundenDo)); Daten.Add(FloatToStr(GesamtStundenFr)); Daten.Add(FloatToStr(GesamtStundenSa)); Daten.Add(FloatToStr(GesamtStundenSo)); //Rückreise Daten.Add(FloatToStr(RückreiseGesamtStundenMo)); Daten.Add(FloatToStr(RückreiseGesamtStundenDi)); Daten.Add(FloatToStr(RückreiseGesamtStundenMi)); Daten.Add(FloatToStr(RückreiseGesamtStundenDo)); Daten.Add(FloatToStr(RückreiseGesamtStundenFr)); Daten.Add(FloatToStr(RückreiseGesamtStundenSa)); Daten.Add(FloatToStr(RückreiseGesamtStundenso)); //Arbeit Daten.Add(FloatToStr(GesamtArbeitsStundenMo)); Daten.Add(FloatToStr(GesamtArbeitsStundenDi)); Daten.Add(FloatToStr(GesamtArbeitsStundenMi)); Daten.Add(FloatToStr(GesamtArbeitsStundenDo)); Daten.Add(FloatToStr(GesamtArbeitsStundenFr)); Daten.Add(FloatToStr(GesamtArbeitsStundenSa)); Daten.Add(FloatToStr(GesamtArbeitsStundenSo)); //Gesamt Daten.Add(FloatToStr(GesamtStundenErgebnisMo)); Daten.Add(FloatToStr(GesamtStundenErgebnisDo)); Daten.Add(FloatToStr(GesamtStundenErgebnisMi)); Daten.Add(FloatToStr(GesamtStundenErgebnisDo)); Daten.Add(FloatToStr(GesamtStundenErgebnisFr)); Daten.Add(FloatToStr(GesamtStundenErgebnisSa)); Daten.Add(FloatToStr(GesamtStundenErgebnisSo)); Daten.SaveToFile(TPath.GetDocumentsPath+TPath.DirectorySeparatorChar+'einstellungen.txt'); showmessage('Ihre Eingaben wurden' +#13+ 'am '+ DateToStr(D_montagezeitvon.Date) +#13+ ' um '+ TimeToStr(Now) +#13+ ' erfolgreich gespeichert!'); end; end;
Delphi-Quellcode:
Ich weiß, schwer schwer umständlich das ganze, zumal ich auch Probleme habe ein Memo Feld mit mehreren Zeilen abzuspeichern. Dafür müsste ich ja jeder Zeile eine andere [Zahl] zuweisen.
procedure THeaderFooterwithNavigation.B_ladenClick(Sender: TObject);
var Daten: TStringList; begin if MessageDlg('Möchten Sie die zuletzt gespeicherte Datei wirklich laden?', TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], 0, TMsgDlgBtn.mbYes) = mrYes then begin Daten := TStringList.Create; Daten.LoadFromFile(TPath.GetDocumentsPath+TPath.DirectorySeparatorChar+'einstellungen.txt'); //Kopf E_auftragnr.text := Daten[0]; E_montagefirma.text := Daten[1]; E_maschinentyp.text := Daten[2]; E_artderarbeit.text := Daten[3]; E_servicetechniker.text := Daten[4]; E_land.itemindex := StrToint(Daten[5]); E_komnr.text := Daten[6]; D_montagezeitvon.date := StrToDate(Daten[7]); D_montagezeitbis.date := StrToDate(Daten[8]); //Mitte D_datummo.date := StrToDate(Daten[9]); D_datumdi.date := StrToDate(Daten[10]); D_datummi.date := StrToDate(Daten[11]); D_datumdo.date := StrToDate(Daten[12]); D_datumfr.date := StrToDate(Daten[13]); D_datumsa.date := StrToDate(Daten[14]); D_datumso.date := StrToDate(Daten[15]); //Anreise E_reisebeginnmo.text := Daten[16]; E_reisebeginndi.text := Daten[17]; E_reisebeginnmi.text := Daten[18]; E_reisebeginndo.text := Daten[19]; E_reisebeginnfr.text := Daten[20]; E_reisebeginnsa.text := Daten[21]; E_reisebeginnso.text := Daten[22]; E_reiseendemo.text := Daten[23]; E_reiseendedi.text := Daten[24]; E_reiseendemi.text := Daten[25]; E_reiseendedo.text := Daten[26]; E_reiseendefr.text := Daten[27]; E_reiseendesa.text := Daten[28]; E_reiseendeso.text := Daten[29]; C_zeitverschiebungmo.itemindex := StrToInt(Daten[30]); C_zeitverschiebungdi.itemindex := StrToInt(Daten[31]); C_zeitverschiebungmi.itemindex := StrToInt(Daten[32]); C_zeitverschiebungdo.itemindex := StrToInt(Daten[33]); C_zeitverschiebungfr.itemindex := StrToInt(Daten[34]); C_zeitverschiebungsa.itemindex := StrToInt(Daten[35]); C_zeitverschiebungso.itemindex := StrToInt(Daten[36]); //Rückreise E_rückreisereisebeginnmo.text := Daten[37]; E_rückreisereisebeginndi.text := Daten[38]; E_rückreisereisebeginnmi.text := Daten[39]; E_rückreisereisebeginndo.text := Daten[40]; E_rückreisereisebeginnfr.text := Daten[41]; E_rückreisereisebeginnsa.text := Daten[42]; E_rückreisereisebeginnso.text := Daten[43]; //Arbeit E_arbeitsbeginnmo.text := Daten[44]; E_arbeitsbeginndi.text := Daten[45]; E_arbeitsbeginnmi.text := Daten[46]; E_arbeitsbeginndo.text := Daten[47]; E_arbeitsbeginnfr.text := Daten[48]; E_arbeitsbeginnsa.text := Daten[49]; E_arbeitsbeginnso.text := Daten[50]; //Variablen //Anreise GesamtStundenMo := StrToFloat(Daten[51]); GesamtStundenDi := StrToFloat(Daten[52]); GesamtStundenMi := StrToFloat(Daten[53]); GesamtStundenDo := StrToFloat(Daten[54]); GesamtStundenFr := StrToFloat(Daten[55]); GesamtStundenSa := StrToFloat(Daten[56]); GesamtStundenSo := StrToFloat(Daten[57]); //Rückreise RückreiseGesamtStundenMo := StrToFloat(Daten[58]); RückreiseGesamtStundenDi := StrToFloat(Daten[59]); RückreiseGesamtStundenMi := StrToFloat(Daten[60]); RückreiseGesamtStundenDo := StrToFloat(Daten[61]); RückreiseGesamtStundenFr := StrToFloat(Daten[62]); RückreiseGesamtStundenSa := StrToFloat(Daten[63]); RückreiseGesamtStundenso := StrToFloat(Daten[64]); //Arbeit GesamtArbeitsStundenMo := StrToFloat(Daten[65]); GesamtArbeitsStundenDi := StrToFloat(Daten[66]); GesamtArbeitsStundenMi := StrToFloat(Daten[67]); GesamtArbeitsStundenDo := StrToFloat(Daten[68]); GesamtArbeitsStundenFr := StrToFloat(Daten[69]); GesamtArbeitsStundenSa := StrToFloat(Daten[70]); GesamtArbeitsStundenSo := StrToFloat(Daten[71]); //Gesamt GesamtStundenErgebnisMo := StrToFloat(Daten[72]); GesamtStundenErgebnisDo := StrToFloat(Daten[73]); GesamtStundenErgebnisMi := StrToFloat(Daten[74]); GesamtStundenErgebnisDo := StrToFloat(Daten[75]); GesamtStundenErgebnisFr := StrToFloat(Daten[76]); GesamtStundenErgebnisSa := StrToFloat(Daten[77]); GesamtStundenErgebnisSo := StrToFloat(Daten[78]); //Anzeige //Anreise E_ReiseStundenMo.Text := FloatToStrF(GesamtStundenMo,ffNumber,5,2); E_ReiseStundenDi.Text := FloatToStrF(GesamtStundenDi,ffNumber,5,2); E_ReiseStundenMi.Text := FloatToStrF(GesamtStundenMi,ffNumber,5,2); E_ReiseStundenDo.Text := FloatToStrF(GesamtStundenDo,ffNumber,5,2); E_ReiseStundenFr.Text := FloatToStrF(GesamtStundenFr,ffNumber,5,2); E_ReiseStundenSa.Text := FloatToStrF(GesamtStundenSa,ffNumber,5,2); E_ReiseStundenSo.Text := FloatToStrF(GesamtStundenSo,ffNumber,5,2); //Arbeit E_ArbeitsStdMo.Text := FloatToStrF(GesamtArbeitsStundenMo,ffNumber,5,2); E_ArbeitsStdDi.Text := FloatToStrF(GesamtArbeitsStundenDi,ffNumber,5,2); E_ArbeitsStdMi.Text := FloatToStrF(GesamtArbeitsStundenMi,ffNumber,5,2); E_ArbeitsStdDo.Text := FloatToStrF(GesamtArbeitsStundenDo,ffNumber,5,2); E_ArbeitsStdFr.Text := FloatToStrF(GesamtArbeitsStundenFr,ffNumber,5,2); E_ArbeitsStdSa.Text := FloatToStrF(GesamtArbeitsStundenSa,ffNumber,5,2); E_ArbeitsStdSo.Text := FloatToStrF(GesamtArbeitsStundenSo,ffNumber,5,2); //Rückreise E_RückreiseReiseStundenMo.Text := FloatToStrF(RückreiseGesamtStundenMo,ffNumber,5,2); E_RückreiseReiseStundenDi.Text := FloatToStrF(RückreiseGesamtStundenDi,ffNumber,5,2); E_RückreiseReiseStundenMi.Text := FloatToStrF(RückreiseGesamtStundenMi,ffNumber,5,2); E_RückreiseReiseStundenDo.Text := FloatToStrF(RückreiseGesamtStundenDo,ffNumber,5,2); E_RückreiseReiseStundenFr.Text := FloatToStrF(RückreiseGesamtStundenFr,ffNumber,5,2); E_RückreiseReiseStundenSa.Text := FloatToStrF(RückreiseGesamtStundenSa,ffNumber,5,2); E_RückreiseReiseStundenSo.Text := FloatToStrF(RückreiseGesamtStundenSo,ffNumber,5,2); //Gesamt E_GesamtStdMo.text := FloatToStrF(GesamtStundenErgebnisMo,ffNumber,5,2); E_GesamtStdDi.text := FloatToStrF(GesamtStundenErgebnisDi,ffNumber,5,2); E_GesamtStdMi.text := FloatToStrF(GesamtStundenErgebnisMi,ffNumber,5,2); E_GesamtStdDo.text := FloatToStrF(GesamtStundenErgebnisDo,ffNumber,5,2); E_GesamtStdFr.text := FloatToStrF(GesamtStundenErgebnisFr,ffNumber,5,2); E_GesamtStdSa.text := FloatToStrF(GesamtStundenErgebnisSa,ffNumber,5,2); E_GesamtStdSo.text := FloatToStrF(GesamtStundenErgebnisSo,ffNumber,5,2); end; end; Geht das alles nicht sowieso viel einfacher? Schwer viel arbeit, haha. Aber das funktioniert ja alles. Ich habe wie gesagt nur Probleme, wenn ich eine Datei speichere und sie dann bei "FormCreate" sofort laden möchte. |
AW: Firemonkey abspeichern (iOS)
Zu diesem Zeitpunkt gibt es ja die Unterkomponenten noch nicht. Nimm besser Loaded
|
AW: Firemonkey abspeichern (iOS)
Es ist anscheinend schwerer als ich gedacht habe :roll:
Zeige uns per CopyPaste den Quelltext der Methode
Delphi-Quellcode:
.
FormCreate
Meinst du das wäre machbar? Zitat:
|
AW: Firemonkey abspeichern (iOS)
Hallo,
was du auch mal probieren kannst, das ganze im FormShow anstelle vom FormCreate zu laden. |
AW: Firemonkey abspeichern (iOS)
Zitat:
Kleinen Moment bitte. Muss das erst noch mal schreiben. Das ist ja eine andere Textdatei. Zitat:
|
AW: Firemonkey abspeichern (iOS)
Speichern Profil: Nur die ersten Zeilen sind interessant, das andere sind die verschiedenen Sprachen.
Delphi-Quellcode:
Laden Profil:
procedure THeaderFooterwithNavigation.B_speichernoptionenClick(Sender: TObject);
var Profil: TStringList; begin Profil := TStringList.Create; Profil.Add(E_vorname.text); Profil.Add(E_nachname.text); Profil.SaveToFile(TPath.GetDocumentsPath+TPath.DirectorySeparatorChar+'profil.txt'); //Hintergrund Bild if C_hintergrundbild.ItemIndex = 0 then HintergrundBlur.Visible := True; if C_hintergrundbild.ItemIndex = 1 then begin HintergrundBlur.Visible := False; HintergrundWeiß.Visible := True; end; if C_hintergrundbild.ItemIndex = 2 then begin HintergrundBlur.Visible := False; HintergrundWeiß.Visible := False; end; // Techniker Name Übertragen HeaderFooterwithNavigation.E_Servicetechniker.text := ( E_vorname.Text + ' ' + E_nachname.Text ); // Sprache Englisch if C_Sprache.ItemIndex = 1 then begin HeaderFooterwithNavigation.Tab_anreise.Text := 'Arrival'; HeaderFooterwithNavigation.Tab_arbeit.Text := 'Work'; HeaderFooterwithNavigation.Tab_rückreise.Text := 'Way back'; HeaderFooterwithNavigation.L_datum.Text := 'Date'; HeaderFooterwithNavigation.L_arbeitsbeginn.Text := 'Start of work'; HeaderFooterwithNavigation.L_arbeitsende.Text := 'Work finished'; HeaderFooterwithNavigation.L_arbeitsstd.Text := 'Work total'; HeaderFooterwithNavigation.L_gesamtstd.Text := 'Total hours'; HeaderFooterwithNavigation.L_warte.Text := 'Wait'; HeaderFooterwithNavigation.L_mo.Text := 'Mon'; HeaderFooterwithNavigation.L_di.Text := 'Tue'; HeaderFooterwithNavigation.L_mi.Text := 'Wed'; HeaderFooterwithNavigation.L_do.Text := 'Thr'; HeaderFooterwithNavigation.L_fr.Text := 'Fri'; HeaderFooterwithNavigation.L_sa.Text := 'Sat'; HeaderFooterwithNavigation.L_so.Text := 'Sun'; HeaderFooterwithNavigation.L_montagesundennachweis.Text := 'TIME-SHEET'; HeaderFooterwithNavigation.L_auftragnr.Text := 'Order no.:'; HeaderFooterwithNavigation.L_montagebeifirma.Text := 'Company name:'; HeaderFooterwithNavigation.L_maschinentyp.Text := 'Machine type:'; HeaderFooterwithNavigation.L_artderarbeit.Text := 'Kind of work:'; HeaderFooterwithNavigation.L_Servicetechniker.Text := 'Technician:'; HeaderFooterwithNavigation.L_Land.Text := 'Country:'; HeaderFooterwithNavigation.L_Komnr.Text := 'Com. No.:'; HeaderFooterwithNavigation.L_Montagezeiten.Text := 'Assembly'; HeaderFooterwithNavigation.L_vonbis.Text := 'carried out:'; HeaderFooterwithNavigation.L_bestätigung.Text := 'The customer herewith confirms the legally acceptance of the machine and/or the installation of same above time listing.'; HeaderFooterwithNavigation.L_auftraggeber.Text := 'Customer'; HeaderFooterwithNavigation.L_Monteur.Text := 'Technician'; HeaderFooterwithNavigation.btnBack.Text := 'Back'; HeaderFooterwithNavigation.B_zurücksetzen.Text := 'Clear fields'; HeaderFooterwithNavigation.B_verschicken.Text := 'Send'; HeaderFooterwithNavigation.B_laden.Text := 'Load'; HeaderFooterwithNavigation.B_speichern.Text := 'Save'; HeaderFooterwithNavigation.L_datumanreise.Text := 'Date'; HeaderFooterwithNavigation.L_Reisebeginnanreise.Text := 'Begin'; HeaderFooterwithNavigation.L_Reiseendeanreise.Text := 'End'; HeaderFooterwithNavigation.L_zvanreise.Text := 'TS'; HeaderFooterwithNavigation.L_reisestdanreise.Text := 'Hours'; HeaderFooterwithNavigation.L_datumrückreise.Text := 'Date'; HeaderFooterwithNavigation.L_Reisebeginnrückreise.Text := 'Begin'; HeaderFooterwithNavigation.L_Reiseenderückreise.Text := 'End'; HeaderFooterwithNavigation.L_zvrückreise.Text := 'TS'; HeaderFooterwithNavigation.L_reisestdrückreise.Text := 'Hours'; HeaderFooterwithNavigation.L_durchgeführtearbeiten.Text := 'Action taken, Remarks'; HeaderFooterwithNavigation.L_benötigteersatzteile.Text := 'Parts required'; HeaderFooterwithNavigation.L_Optionenoptionen.Text := 'Options'; HeaderFooterwithNavigation.L_technikeroptionen.Text := 'Technician:'; HeaderFooterwithNavigation.L_spracheoptionen.Text := 'Language:'; HeaderFooterwithNavigation.L_hintergrundbildoptionen.Text := 'Background:'; HeaderFooterwithNavigation.L_nachnameoptionen.Text := 'Last name'; HeaderFooterwithNavigation.L_vornameoptionen.Text := 'First name'; HeaderFooterwithNavigation.B_speichernoptionen.Text := 'Save'; HeaderFooterwithNavigation.B_abbrechenoptionen.Text := 'Cancel'; L_unterschriftinfo.Text := 'Enter your signature here!'; L_unterschrift.Text := 'Signature'; B_speichernunterschriftauftraggeber.text := 'Save'; B_abbrechenunterschrift.text := 'Cancel'; L_neu.text := 'New'; B_speichernunterschriftmonteur.text := 'Save'; B_abbrechenunterschriftmonteur.text := 'Cancel'; B_neumonteur.text := 'New'; B_optionen.Text := 'Options' end; // Sprache Deutsch if C_Sprache.ItemIndex = 0 then begin HeaderFooterwithNavigation.Tab_anreise.Text := 'Anreise'; HeaderFooterwithNavigation.Tab_arbeit.Text := 'Arbeit'; HeaderFooterwithNavigation.Tab_rückreise.Text := 'Rückreise'; HeaderFooterwithNavigation.L_datum.Text := 'Datum'; HeaderFooterwithNavigation.L_arbeitsbeginn.Text := 'Arbeitsbeginn'; HeaderFooterwithNavigation.L_arbeitsende.Text := 'Arbeitsende'; HeaderFooterwithNavigation.L_arbeitsstd.Text := 'Arbeitsstd.'; HeaderFooterwithNavigation.L_gesamtstd.Text := 'Gesamtstd.'; HeaderFooterwithNavigation.L_warte.Text := 'Warte'; HeaderFooterwithNavigation.L_mo.Text := 'Mo'; HeaderFooterwithNavigation.L_di.Text := 'Di'; HeaderFooterwithNavigation.L_mi.Text := 'Mi'; HeaderFooterwithNavigation.L_do.Text := 'Do'; HeaderFooterwithNavigation.L_fr.Text := 'Fr'; HeaderFooterwithNavigation.L_sa.Text := 'Sa'; HeaderFooterwithNavigation.L_so.Text := 'So'; HeaderFooterwithNavigation.L_montagesundennachweis.Text := 'Montage-Stunden-Nachweis'; HeaderFooterwithNavigation.L_auftragnr.Text := 'Auftrag Nr.:'; HeaderFooterwithNavigation.L_montagebeifirma.Text := 'Montage bei Firma:'; HeaderFooterwithNavigation.L_maschinentyp.Text := 'Maschinentyp:'; HeaderFooterwithNavigation.L_artderarbeit.Text := 'Art der Arbeit:'; HeaderFooterwithNavigation.L_Servicetechniker.Text := 'Servicetechniker:'; HeaderFooterwithNavigation.L_Land.Text := 'Land:'; HeaderFooterwithNavigation.L_Komnr.Text := 'Kom. Nr.:'; HeaderFooterwithNavigation.L_Montagezeiten.Text := 'Montagezeiten:'; HeaderFooterwithNavigation.L_vonbis.Text := '(von/bis)'; HeaderFooterwithNavigation.L_bestätigung.Text := 'Hiermit bestätigt der Auftraggeber die rechtsverbindliche Abnahme der Maschine und/oder der ausgeführten Montagearbeiten sowie die Richtigkeit der vorstehenden Aufstellung.'; HeaderFooterwithNavigation.L_auftraggeber.Text := 'Auftraggeber'; HeaderFooterwithNavigation.L_Monteur.Text := 'Monteur'; HeaderFooterwithNavigation.btnBack.Text := 'Zurück'; HeaderFooterwithNavigation.B_zurücksetzen.Text := 'Felder zurücksetzen'; HeaderFooterwithNavigation.B_verschicken.Text := 'Verschicken'; HeaderFooterwithNavigation.B_laden.Text := 'Laden'; HeaderFooterwithNavigation.B_speichern.Text := 'Speichern'; HeaderFooterwithNavigation.L_datumanreise.Text := 'Datum'; HeaderFooterwithNavigation.L_Reisebeginnanreise.Text := 'Reisebeginn'; HeaderFooterwithNavigation.L_Reiseendeanreise.Text := 'Reiseende'; HeaderFooterwithNavigation.L_zvanreise.Text := 'ZV'; HeaderFooterwithNavigation.L_reisestdanreise.Text := 'Reisestunden'; HeaderFooterwithNavigation.L_datumrückreise.Text := 'Datum'; HeaderFooterwithNavigation.L_Reisebeginnrückreise.Text := 'Reisebeginn'; HeaderFooterwithNavigation.L_Reiseenderückreise.Text := 'Reiseende'; HeaderFooterwithNavigation.L_zvrückreise.Text := 'ZV'; HeaderFooterwithNavigation.L_reisestdrückreise.Text := 'Reisestunden'; HeaderFooterwithNavigation.L_durchgeführtearbeiten.Text := 'Durchgeführte Arbeiten, Bemerkungen'; HeaderFooterwithNavigation.L_benötigteersatzteile.Text := 'Benötigte Ersatzteile'; HeaderFooterwithNavigation.L_Optionenoptionen.Text := 'Optionen'; HeaderFooterwithNavigation.L_technikeroptionen.Text := 'Techniker:'; HeaderFooterwithNavigation.L_spracheoptionen.Text := 'Sprache:'; HeaderFooterwithNavigation.L_hintergrundbildoptionen.Text := 'Hintergrundbild:'; HeaderFooterwithNavigation.L_nachnameoptionen.Text := 'Nachname'; HeaderFooterwithNavigation.L_vornameoptionen.Text := 'Vorname'; HeaderFooterwithNavigation.B_speichernoptionen.Text := 'Speichern'; HeaderFooterwithNavigation.B_abbrechenoptionen.Text := 'Abbrechen'; L_unterschriftinfo.Text := 'Setzen Sie hier Ihre Unterschrift!'; L_unterschrift.Text := 'Unterschrift'; B_speichernunterschriftauftraggeber.text := 'Speichern'; B_abbrechenunterschrift.text := 'Abbrechen'; L_neu.text := 'Neu'; B_speichernunterschriftmonteur.text := 'Speichern'; B_abbrechenunterschriftmonteur.text := 'Abbrechen'; B_neumonteur.text := 'Neu'; B_optionen.Text := 'Optionen' end; P_optionen.Visible := false; HintergrundSchwarz.Visible := false; HintergrundSchwarzTop.Visible := false; HintergrundSchwarzBot.Visible := false; end;
Delphi-Quellcode:
procedure THeaderFooterwithNavigation.FormCreate(Sender: TObject);
var ende, start: TDateTime; Daten: TStringList; Profil: TStringList; begin { This defines the default active tab at runtime } TabControl1.First(TTabTransition.ttNone); Tab_Formular.TabIndex := 1; //Montagezeit initialisierung D_montagezeitvon.Date := Date(); D_datummo.date := StartOfTheWeek(D_montagezeitvon.date); D_montagezeitbis.Date := D_datummo.Date + 6; D_datumdi.Date := D_datummo.Date +1; D_datummi.Date := D_datummo.Date +2; D_datumdo.Date := D_datummo.Date +3; D_datumfr.Date := D_datummo.Date +4; D_datumsa.Date := D_datummo.Date +5; D_datumso.Date := D_datummo.Date +6; //Optionen Feld wird ausgeblendet bei Start P_optionen.Visible := false; //HintergrundSchwarz wird bei Start ausgeblendet HintergrundSchwarz.Visible := false; HintergrundSchwarzTop.Visible := false; HintergrundSchwarzBot.Visible := false; // Für Unterschrift Signature:= TList<TSigCapRec>.Create; P_unterschrift.Visible := false; // Für Unterschrift Auftraggeber Image_UnterschriftAuftraggeber.Bitmap.Assign(R_UnterschriftAuftraggeber.MakeScreenshot); // Für Unterschrift Monteur Image_UnterschriftMonteur.Bitmap.Assign(R_UnterschriftAuftraggeber.MakeScreenshot); //Profil laden Profil := TStringList.Create; Profil.LoadFromFile(TPath.GetDocumentsPath+TPath.DirectorySeparatorChar+'profil.txt'); E_servicetechniker.Text := Profil[0] + Profil[1]; end; |
AW: Firemonkey abspeichern (iOS)
Bin ich jetzt der Einzige, der sich denkt, was hat #27 mit #22 zu tun :wall:
Was sagt der Debugger, in welcher Zeile verabschiedet sich das Programm? (zieh jedes Haar einzeln aus der Nase) PS Wenn du keinen Sarkasmus magst, dann poste doch selbständig alle relevanten Informationen zur Frage |
AW: Firemonkey abspeichern (iOS)
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Tut mir leid, ich programmiere erst seit dem ich im Praktikum bin und habe auf Hilfe hier im Forum gehofft, ohne dämliche Zwischenbemerkungen. Habe die App bisher immer ohne Debugger gestartet, da er das Programm dann viel schneller ausführt. Vielleicht etwas dämlich von mir. Jetzt funktioniert das ganze jedoch. Habe den Fehler gefunden. Hatte, als ich das das erste mal ausprobiert habe, vergessen das Feld vom Servicetechniker als Ausgabe anzugeben. Dementsprechend hat er zwar die Sachen geladen, aber nicht ausgeben können. Zitat:
Nachtrag: Wie mache ich das mit der Abfrage, ob die Datei besteht? Auf dem Simulator funktioniert es nämlich, auf dem Gerät nicht. |
AW: Firemonkey abspeichern (iOS)
Deine Ausgangsfrage war doch .... (nochmal nachschauen)
Zitat:
Delphi-Quellcode:
(laden der 'profil.txt') und somit dem Starten der Anwendung zu tun hat, sollte schon klar sein.
FormCreate
Und da stellt sich doch die berechtigte Frage, warum du uns diesen Teil zeigst mit dem Hinweis Zitat:
Darum den echten QuellCode zeigen und kein Verweis auf irgendeinen ähnlich gearteten |
AW: Firemonkey abspeichern (iOS)
Liste der Anhänge anzeigen (Anzahl: 1)
Das sind doch beide die gleichen Quellcodes gewesen, nur dass der für das Laden des Profils im "FormCreate" war, anstatt wie bei Einstellungen.txt auf einem Button.
Zitat:
![]() |
AW: Firemonkey abspeichern (iOS)
Nur mal so zum Code allgemein:
Das Verwenden von MagicValues
Delphi-Quellcode:
an mehreren Stellen im QuellCode ist eine schöne potentielle Fehlerquelle.
'profil.txt'
Definiere dir dafür einfach eine Konstante und benutze diese.
Delphi-Quellcode:
const
PROFIL_TXT = 'profil.txt'; procedure THeaderFooterwithNavigation.FormCreate(Sender: TObject); ... //Profil.LoadFromFile(TPath.GetDocumentsPath+TPath.DirectorySeparatorChar+'profil.txt'); Profil.LoadFromFile( TPath.GetDocumentsPath + TPath.DirectorySeparatorChar + PROFIL_TXT ); ... procedure THeaderFooterwithNavigation.B_speichernoptionenClick(Sender: TObject); ... //Profil.SaveToFile(TPath.GetDocumentsPath+TPath.DirectorySeparatorChar+'profil.txt'); Profil.SaveToFile( TPath.GetDocumentsPath + TPath.DirectorySeparatorChar + PROFIL_TXT ); ... Zitat:
|
AW: Firemonkey abspeichern (iOS)
Zitat:
Und deshalb ist es nicht das Selbe. Es macht aucgh einen Unterschied, ob Du in einen einen Kopfsprung in ein gefülltes Becken machst, oder ob jemand das Wasseer abgelassen hat. Ausserdem hast Du dich bisher geweigert (bis zum letzten Beitrag!) uns den genauen Fehler zu Nennen! Nachfragen ignorierst Du lieber! Hättest Du die Meldung sofort gepostet, hätten wir uns seitenlanges Rätselraten ersparen können! |
AW: Firemonkey abspeichern (iOS)
Zitat:
Wenn ich jetzt mit FileExists prüfe, muss ich dann nur 'profile.txt' angeben? Ich versuche mal ein wenig und poste dann den Quellcode. ;) |
AW: Firemonkey abspeichern (iOS)
Zitat:
Zitat:
Delphi-Quellcode:
kann über die DeveloperMindAPI in dein Hirn schauen und weiß damit ganz genau, welchen Pfad du denn meinst. Bei den anderen Funktionen zum Laden hat man wohl vergessen diese DeveloperMindAPI zu implementieren. Sehr schlampig
FileExists
|
AW: Firemonkey abspeichern (iOS)
Zitat:
-Keine Fakten verheimlichen -Rückfragen nicht ignorieren -Tipps annehmen -Keine Antworten Posten, welche man als Beleidigungen interpretieren könnte Zitat:
Delphi-Quellcode:
TPath.GetDocumentsPath + TPath.DirectorySeparatorChar + PROFIL_TXT
|
AW: Firemonkey abspeichern (iOS)
:glaskugel:
-> Gibt wohl ein Bier für mich :cheers: |
AW: Firemonkey abspeichern (iOS)
Zitat:
Dankeschön für eure Hilfe. Funktioniert alles einwandfrei. Gebe mir bei meinem nächsten Problem mehr Mühe alle relevanten Fakten zu liefern und versuche möglichst nicht als ein Anfänger zu wirken. MfG Andre |
AW: Firemonkey abspeichern (iOS)
Zitat:
-> PN |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20: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