Pagina1 van 1
Forum

Welkom bij de Tweaking4All gemeenschapsforums!
Voor je gaat deelnemen, bekijk de Forum Regels!

Specifieke onderwerpen: Start het onderwerp met de naam van het programma of systeem.
Bijvoorbeeld “MacOS X – Jouw vraag“, of bijvoorbeeld “MS Word – Jouw Tip of Truc“.

Merk op: Omschakelen naar een andere taal zal niet werken als je een post aan het lezen bent aangezien er waarschijnlijk geen vertaling beschikbaar is.



Deel:
Meldingen
Alles wissen

[Opgelost] Vraag door oude Pascaller

137 Berichten
2 Gebruikers
0 Reactions
17.5 K Bekeken
(@hengst)
Trusted Member
Deelgenomen: 10 jaar geleden
Berichten: 83
Topic starter  

Ik bedoel dat het juist niet tweemaal mag draaien.
dus als je progr.exe opstart en je tracht het weer te doen dat er een melding komt "het progr draait al" 

dank Hans


   
BeantwoordenCiteren
(@hengst)
Trusted Member
Deelgenomen: 10 jaar geleden
Berichten: 83
Topic starter  

Ja mijn vraag had moeten zijn:

Ik heb nog een vraag. Weet iemand een methode om ervoor te zorgen dat als je een exe versie van een programma hebt gestart dat het niet nog een keer kan opstarten.


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2864
 

Ah OK, je zoet een "one-instance" methode!

Optie 1 - UniqueInstance Component

Ik zag daar iets voor, ah gevonden! Kijk hier eens: Lazarus Wiki UniqueInstance

Je kunt het hier downloaden, of gebruik de attachment.

Voor zover ik kan zien moet je uniqueinstance_package.lpk openen vanuit Lazarus met "File" - "Open", dan op "Open Package" klikken, "Compile" en dan "Use" (als ik me niet vergis). Lazarus kan dan hercompileren, waarna dit als component beschikbaar zou moeten zijn.

Geen idee hoe "soepel" dit gaat lopen (zie ook Forum discussie).

Optie 2 - LSRunOnce demo

Ik vond hier ook nog een demo voor een alternatieve methode.

Je moet een TTimer op de form zetten en die de naam "RunOnceMonitorTimer" geven.

unit MainFrm;
{$mode objfpc}{$H+}
interface
uses
  Forms, StdCtrls, ExtCtrls;
type
  { TMainForm }
  TMainForm = class(TForm)
    InfoLabel: TLabel;
    RunOnceMonitorTimer: TTimer;
    procedure RunOnceMonitorTimerTimer(Sender: TObject);
  end;
const
  CMyAppAtom = 'myapp';
var
  MainForm: TMainForm;
  FirstStart: Boolean = True;
implementation
{$R *.lfm}
uses
  LSUtils;
{ TMainForm }
procedure TMainForm.RunOnceMonitorTimerTimer(Sender: TObject);
begin
  if LSGlobalFindAtom(CMyAppAtom) then
  begin
    LSGlobalDeleteAtom(CMyAppAtom);
    if not FirstStart then
    begin
      if WindowState = wsMinimized then
        Application.Restore
      else
        BringToFront;
    end;
    FirstStart := False;
  end;
end;
end.

Optie 3 - Probeer Delphi code (omdat je toch onder Windows werkt)

Verder vond ik nog een voorbeeld in Delphi die zomaar ook onder Lazarus zou kunnen werken, met meer detail en uitleg: link naar About.com.

Ik kan ze helaas geen van allen testen omdat ik even geen Windows ter beschikking heb en de Mac start standard alleen maar 1x de applicatie op.


   
BeantwoordenCiteren
(@hengst)
Trusted Member
Deelgenomen: 10 jaar geleden
Berichten: 83
Topic starter  

Hoi Hans,

Ben nog steeds aan het programmaatjes schrijven.
Heb jij ervaring met het in de achtergrond van een Lazarus programma naar een website documenten uitwisselen, opslaan op schrijf e.d.

Tevens ben ik naar een online beveiliging aan het kijken bij de start van het programma.

Elke input is welkom.

Dank.
Gerard


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2864
 

Hi Gerard,

ik zie dat je de smaak te pakken hebt .

Het werken met online documenten (via HTTP of FTP) kun je het beste doen met Synapse - kijk voor voorbeelden eens op de Lazarus Wiki - Synapse. Ik heb zelf alleen ervaring met het ophalen van documenten, maar het werkt erg soepel.

Synapse is gratis en kun je hier downloaden - je hoeft het niet perse te installeren, gewoon de bestanden uit de lib directory in de project directory van jouw applicatie kopieren en je kunt aan de slag.

Misschien ben je al bekend met POST en GET voor het versturen van data naar een website (in HTML via de <FORM> tag) - de ene (POST) is wat onzichtbaarder maar ook wat bewerkelijker. De andere (GET) is erg eenvoudig in gebruik.

B.v. 

 http://mijn.website.nl/verificatie.php?serienummer-1234567890  

als document dat je wilt ophalen met 1234567890 als "serie nummer". Vervolgens in verificatie.php op de webserver even in de database kijkt of het nummer bestaat en dan op basis daarvan iets terug sturen (of zelfs niets terug sturen als het faalt).


   
BeantwoordenCiteren
(@hengst)
Trusted Member
Deelgenomen: 10 jaar geleden
Berichten: 83
Topic starter  

unit20150214.pas(3166,20) Warning: Symbol "SQLiteLibraryName" is deprecated: "use sqlite3dyn.SQLiteDefaultLibrary instead"

Krijg de volgende foutmelding bij het opzetten van de DB volgens de instructies op je site.

Enig idee?


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2864
 

Het is enkel een waarschuwing, de unit compileerde goed (als er geen "error" meldingen zijn).

Je kunt eventueel de variable "SQLiteDefaultLibrary" vervangen door "sqlite3dyn.SQLiteDefaultLibrary" in jouw code.
Ik ben helaas even niet in de gelegenheid om dit te testen - moet "even" naar de VS om m'n huisraad te gaan verhuizen naar Nederland.


   
BeantwoordenCiteren
(@hengst)
Trusted Member
Deelgenomen: 10 jaar geleden
Berichten: 83
Topic starter  

Ok Hans, succes in de States.

Dit probleem voorbij blijf ik hangen in je instructies, bij:

"Nu kunnen we de gebruikelijke Queries en Tabellen toevoegen (beiden gebruiken het TSQLQuery component) – voor tabellen moet je ook de “SQL” property invullen met een simpele query, bijboorbeeld"

Namelijk gebruikelijk is voor je eerste database wel wat veel.


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2864
 

Dank je wel Gerard!

Sorry dat het wat verwarrend over komt. Ik had misschien beter kunnen zeggen:

Nu kunnen we de gemaakte gebruikelijke Queries en Tabellen toevoegen (beiden gebruiken het TSQLQuery component) – voor tabellen moet je ook de “SQL” property invullen met een simpele query, bijboorbeeld

Ook niet 100% duidelijk als je nog niet met databases gewerkt hebt.

In Valentina kun je een database maken, met tabellen enzo. Ik neem aan dat je dat stuk goed doorlopen bent.
Het SQLite bestand wat nu aangemaakt is heb je ook gekoppeld, en dan komt het SQL stukje ...

Dat laatste vereist wel een beetje SQL kennis - je kunt queries testen in Valentina en daarna in de TSQLQuery component gebruiken.

Stel je hebt een tabel "movies" die een aantal velden heeft. Een daarvan heet b.v. "filename". 

Het opvragen van alle records, gesorteerd naar "filename" wordt dan als volgt gedaan.

SELECT * FROM movies ORDER BY filename;

Als sorteren niet belangrijk is:

SELECT * FROM movies;

Dat laatste leest misschien het beste voor een eerste poging.
Select(eer) "*" (net als in DOS) van de database "movies".

Mocht je nog geen of weinig ervaring met SQL hebben, hier een paar links die ik zo 1-2-3 kon vinden: SQL voor beginners (op basis van MySQL), SQL Tutorial (Nederlands), SQL voor beginners (generiek). Mocht je iets beters vinden dan houdt ik me aanbevolen (zit een beetje onder tijdsdruk i.v.m. de verhuis).

Overigens: werken met databases kan een beetje verwarrend zijn - zeker als je er net mee begint.
Bij SQLite moet ik er zelf ook even goed over nadenken en soms m'n eigen artikel doorlopen om weer niet iets te vergeten.


   
BeantwoordenCiteren
(@hengst)
Trusted Member
Deelgenomen: 10 jaar geleden
Berichten: 83
Topic starter  

Hoi Hans,
Al terug uit de States? Alles goed gegaan.
SQL is voor mij moeilijker dan ik dacht.
Ik heb heel duidelijk voor ogen wat ik wil, echter hoe dat in Valentina of Lazarus verder mee te gaan is een stap die ik hoe ik ook lees niet begrijp.
Zal wel een stap in zitten die ik niet zie.
Tabel 1 met 2 geïndexeerde velden, waarvan 1 uniek, nergens mag het nul zijn en op 1 plaats een koppeling naar tabel 2
Tabel 2 met 1 geïndexeerd veld die is uniek, een veld mag nul maar rest niet
Tabel 3 met 1 geïndexeerd veld die is uniek, en op 1 plaats een koppeling naar een geïndexeerd uniek veld van tabel 1, deze verwijzing kan oneindig keer voorkomen.
Tabel 4 met 2 unieke velden die beiden verwijzen naar een geïndexeerd uniek veld van tabel 1, maar mogen ook beiden nul zijn maar als ingevuld moeten beiden ingevuld zijn
Tabel 5 met een uniek nummer en verwijzing naar een geïndexeerd uniek veld van tabel 1, en een (haast) onbeperkt tekst veld.
Tabel 6 met verwijzing naar een geïndexeerd uniek veld van tabel 1 met een aantal velden die via internet steeds bij gebruik gecontroleerd moeten worden op wijzigingen
Dus eerst moet ik deze db kunnen bouwen qua structuur.
Dan wil ik de data erin kunnen zetten, kunnen lezen, kunnen wijzigen en wissen, maar dan steeds vanaf de velden in mijn bestaande programma. De gegevens in de tabel gebruik ik nu in tabellen die .txt files zijn.
Hopelijk kan je me op gang helpen als je terug bent uit de States.
Dank


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2864
 

Hoi Gerard,...

Het is een drukte hier met de verhuis, ik kom de 26e aan in NL. Ik zal proberen jouw vraag tussendoor te beantwoorden als ik kan.

Als het antwoord te lang duurt, schroom je er dan niet voor om me even te herinneren door hier een berichtje te plaatsen.


   
BeantwoordenCiteren
(@hengst)
Trusted Member
Deelgenomen: 10 jaar geleden
Berichten: 83
Topic starter  

Succes daar met je verhuizing.

Na veel studie heb ik via een omweg (met jouw voorbeeld) code om een database te maken. Ben daar mee aan het experimenteren. Kan hem wel met Valentina inzien maar wijzigingen lukt me niet, wel via Lazarus. Dus het maken van de db is nu geen probleem meer (hoop ik).
Nu ben ik aan het kijken hoe ik de db vul met gegevens vanuit mijn programma en weer terug lees.
Heb nog steeds geen idee, maar we blijven proberen.
Dank Hans

   
BeantwoordenCiteren
(@hengst)
Trusted Member
Deelgenomen: 10 jaar geleden
Berichten: 83
Topic starter  

Hoi Hans,
Het volgende lukt. Waarschijnlijk niet via de mooiste code, maar het werkt.
Heb een database met  3 tables die door Lazarus gecreëerd wordt als niet bestaat anders geopend.
Kan de drie tables vullen met data vanuit Lazarus. Data afkomstig vanuit de eerdere geschreven input velden.
Nu gaan we kijken om de data te lezen en te wijzigen en data te deleten.

Moet zeggen SQL vraagt wel veel van een programmeur die nooit met een DB gewerkt heeft.

Voor zover de update.

Hoe gaat de verhuizing?

Gerard


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2864
 

Hoi Gerard!

Mooi dat je al wat voorgang maakt. SQL is in het begin wel even wennen ja, daarom gebruik ik vaak een visual designer.
Ik ben zelf een tijd met MySQL bezig geweest en gebruikte daarvoor EMS MySQL Manager, ik geloof niet dat ze iets gelijkwaardig voor SQLite hebben.
Voordeel van een visual designer is dat je niet meteen in de diepte hoeft te gaan voor het bouwen van queries (tabel bekijken is al een query). Je kunt na het groffe werk wat tweaken indien nodig zonder al te veel type werk.

Valentina biedt een beetje visual design aan, maar ik ben er niet echt kapot van, maar het is een van de weinige gratis SQL managers voor SQLite en voor meerdere besturingssystemen.

Alternatieven zijn helaas niet altijd gratis. B.v. NaviCat for SQLite ($169!!!), SQLite Expert (zeker de moeite, er is een gratis versie en alleen voor Windows beschikbaar), en dan is er nog deze enorme lijst op de SQLite website.

De verhuizing gaat me een hernia bezorgen ... heb al een zwakke rug, ik zal blij zijn als het zaterdag is ... dan zou alles weg moeten zijn. 


   
BeantwoordenCiteren
(@hengst)
Trusted Member
Deelgenomen: 10 jaar geleden
Berichten: 83
Topic starter  

Ik probeer alles via lazarus te doen en niets via een SQL manager.

De structuur zit erin, data kan ik vullen alleen loop nog tegen vele lees, schrijf en wijzig problemen aan.

Tracht steeds een standaard structuur op te zetten waarmee ik lees, schrijf e.d.

Raar is dat een tekst string die exact gelijk is aan de INSERT commando niet werkt. Maar we zoeken door.

Moet zeggen dat er weinig tot niets te vinden is op internet met voorbeelden vanuti lazarus een SQLite te bedienen. Dan bedoel ik duidelijke instructies. Wellicht moeten we die nog maar later via jou site plaatsen. :-) 

Let op met je rug, je hebt er maar één.

Succes

gerard


   
BeantwoordenCiteren
Pagina 5 / 10
Deel: