Faits: Faits: A. Par décision du 20 février 2004, le Procureur général du canton de Genève a classé une plainte pénale déposée par X._ contre le directeur d'une institution sociale, pour détournement. Après avoir recueilli les observations de la personne mise en cause, le Procureur a estimé qu'il n'y avait aucun indice de commission d'une infraction. X._ a saisi la Chambre d'accusation genevoise par acte du 2 mars 2004. Il dénonçait un abus de confiance et une violation de la LSEE, en affirmant que des prestations avaient été indûment versées à un ressortissant étranger. Par ordonnance du 26 mars 2004, la Chambre d'accusation a déclaré le recours irrecevable: celui-ci ne contenait ni conclusions formelles, ni indications quant à la suite que le recourant entendait donner à l'annulation de la décision attaquée. Par ordonnance du 26 mars 2004, la Chambre d'accusation a déclaré le recours irrecevable: celui-ci ne contenait ni conclusions formelles, ni indications quant à la suite que le recourant entendait donner à l'annulation de la décision attaquée. B. X._ forme un recours de droit public contre cette dernière ordonnance; se plaignant de discrimination et d'arbitraire, il demande l'annulation de la décision attaquée et le renvoi de la cause à la Chambre d'accusation - dans une nouvelle composition - afin qu'il soit statué à nouveau. Le recourant a ensuite requis l'assistance judiciaire. La Chambre d'accusation se réfère aux considérants de sa décision. Le Procureur général conclut au rejet du recours. Le recourant a répliqué, sans y être autorisé.